RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:9:30-18:00
你可能遇到了下面的问题
关闭右侧工具栏

技术支持

20 个让你效率更高的 CSS 代码技巧
  • 作者:admin
  • 发表时间:2019-06-26 13:13
  • 来源:未知

  在这里想与你分享一个由各大CSS网站总结推荐的20个有用的规则和实践经验集合。

  与其他大多数属性不同,上下的垂直外边距margin在同时存在时会发生外边距折叠。这意味着当一个元素的下边缘接触到另一个元素的上边缘时,只会保留两个margin值中较大的那个。例如:

  红色方块与蓝色方块的上下间距是40px,而不是70px。解决外边距折叠的方法有很多种,对于初学者来说最简单的就是所有元素只使用一个方向上的margin,比如上下的外边距我们统统使用margin-bottom。

  flex弹性布局的出现是有原因的。浮动和inline-block虽然也能实现很多的布局效果,但它们本质上是文本和块元素布局的工具,而不是面向整个网页的。flex可以很容易的按照我们预期的方式创建布局。

  flex拥有一组面向“弹性容器”的属性和一组面向“弹性项目”的属性,一旦你学会了它们,做任何响应式布局都是小菜一碟。目前各类浏览器的最新版本对flex的支持性也是没有任何问题的,所以你应该多多使用flex布局。

  尽管这些年来有了很大的改善,但是不同浏览器对于各种元素的默认样式仍然存在很大的差异。解决这个问题的最佳办法是在CSS开头为所有的元素设置通用的CSS Reset重置代码,这样你是在没有任何默认内外边距的基础上进行布局,于是所产生的效果也就是统一的。

  网络上已经有成熟的CSS代码库为我们解决浏览器不一致问题,例如normalize.css、minireset和ress,你可以在你的项目中引用它们。如果你不想使用第三方代码库,你可以使用下面的样式来进行一个非常基本的CSS reset:

  上面的代码看起来有些霸道,将所有元素的内外边距都设置为0了,而正是没有了这些默认内外边距的影响,使得我们后面的CSS设置会更加的容易。同时box-sizing: border-box也是一个很棒的设置,我们紧接着就会介绍它。

  大多数初学者都不知道box-sizing这个属性,但实际上它非常重要。box-sizing属性有两个值:

  将所有元素都设置为border-box,可以更轻松的改变元素的大小,而不必担心padding或者border值会将元素撑开变形或者换行显示。

  当给页面添加图片时,尤其需要图片是响应式的时候,最好使用background属性来引入图片,而不是img标签。

  这看起来使用图片会更复杂,但实际上它会使设置图片的样式变得更加容易。有了background-size, background-position和其它的属性,保持或改变图片原始尺寸和宽高比会更方便。

  background引入图片的一个缺点是页面的Web可访问性会受到轻微的影响,因为屏幕阅读器和搜索引擎无法正确地获取到图像。这个问题可以通过CSS object-fit属性解决,到目前为止除了IE浏览器其他的浏览器都可以使用object-fit。

  HTML中的表格总是很难看的。它们很难做成响应式的,而且总体上很难改变样式。例如,如果要向表格及其单元格添加简单的边框,则最可能的结果是:

  如你所见,有很多重复的边框,看起来很不好看。这里有一个快速的方法来删除所有的双倍边框:border-collapse: collapse,只需设置这个属性后,表格的边框看起来就顺眼多了:

  CSS也许不是一种编程语言,但其代码仍然需要文档化。添加一些简单的注释可以将代码分类区分,方便自己和同事后期维护。

  当class或者ID包含多个单词时,应使用连字符(-),CSS不区分大小写,因此不能使用驼峰式命名。同样,CSS中也不建议使用下划线连接的命名方式。

  当涉及到命名时,您还可以考虑BEM,它遵循一组原则,提供基于组件并增加一致性的开发方法。

  大多数CSS属性的值都是从DOM树中向上一级的元素继承的,因此才被命名为级联样式表。以font属性为例-它总是从父级继承的,您不必为页面上的每个元素都单独设置。

  只需将要设置的字体样式添加到html或body元素中,然后让它们自动向下继承。

  然后我们就可以统一的一次改变页面上所有的文字样式了。当然,CSS中并不是所有的属性都是可继承的,对于这些属性我们仍然需要在每个元素上单独设置。

  下面的例子中,我们给.ball元素添加了一个从左向右的移动动画。推荐使用transform: translateX函数来代替left属性。

  CSS社区非常庞大,不断有新的代码库出现。它们有各种用途,从微小的片段到构建响应式应用程序的整体框架。其中大多数也是开源的。

  下一次当你面对一个CSS问题时,在你试图费尽全力解决它之前,检查一下Github或Codepen上是否已经有了一个可用的解决方案。

  css的选择器并不都是平等的。当初学习CSS时,我总是认为选择器会覆盖它上面的所有内容。然而,情况并非如此,就如我们在下面的示例中所说明的:

  我们希望.active类中设置的样式会生效使按钮变为红色。但是它并不会起作用,因为按钮在上面有一个ID选择器,它同样设置了background-color,ID选择器具有更高的权重,所以按钮的颜色是蓝色的。选择器的权重大小规格如下:

  权重也会叠加,于是a#button.active的权重要比a#button的高。一开始就使用高权重的选择器会导致你在后面的维护中不断的使用更高权重的选择器,最终选择使用!important,这是非常不推荐的,具体的原因紧接着就会讲到。

  说真的,不要使用!important。现在看起来可以快速的解决问题,但最终可能会导致大量的重写。相反,我们应该花点时间找到CSS选择器不工作的原因并更改它。

  唯一可以使用的!important的地方是当您想要覆盖HTML中的内联样式时,但是内联样式同样也是一个坏的习惯,应该尽量的避免。

  如果你需要将某段文字全部转化为大写,我们可以在HTML中正常书写,然后通过CSS来转化。这样可以保持上下文内容的一致性。

  设置元素与文本的大小应该用哪种单位,em,rem,还是px?一直以来都有很多的争论。事实是,这三种选择都是可行的,都有其利弊。

  在什么时候在什么项目使用哪种单位是没有一个定论的,开发人员的习惯不同,项目的要求不同,都可能会使用不同的单位。然而,虽然没有固定的规则,但是每种单位还是有一些要注意的地方的:

  最重要的是,不要害怕尝试,尝试所有方法,看看最适合什么。有时候,em和rem可以节省很多工作,尤其是在构建响应式页面时。

  你一定听说过它们 - Sass, Less, PostCSS, Stylus。预处理器是CSS的未来。它们提供诸如变量、CSS函数、选择器嵌套和许多其他很酷的功能,使CSS代码更易于管理,特别是在大型项目中。

  举个简单的例子,下面是一个SASS代码的片段,它使用到了一些CSS变量和函数:

  预处理器的唯一的不足之处是它们任然需要编译成普通的CSS。而CSS推出的自定义属性则是真正意义上的预处理。

  浏览器前缀是CSS中最烦人的事情之一,每个属性需要的前缀是不一致的,你永远不知道到底需要哪一个,如果真的要把它一个一个手动添加到样式表中,那无疑是一个无聊的噩梦。

  值得庆幸的是,有工具可以自动为我们提供添加浏览器前缀的功能,甚至可以决定需要支持哪些浏览器:

  为了提高网站和应用程序的加载速度和页面负载,您应该使用压缩后的资源。压缩版本的文件将删除所有空白和重复,从而减少总文件的体积。当然,这个过程也会使样式表完全不可读,所以要在生产环境中使用.min版本,同时为开发保留常规版本。

  对于CSS的属性Web浏览器仍然存在许多兼容性不一致的地方。使用caniuse来检查您使用的属性是否得到了广泛的支持?是否需要前缀?或者是否在某个浏览器中使用有要注意的地方?有了caniuse你在写CSS时就会更得心应手了。

  验证CSS可能不像验证HTML或Java代码那么重要,但是通过工具运行一下你的代码仍然非常有用。它会告诉你是否犯了任何错误,警告错误的用法,并为您提供改进代码的提示。

  就像压缩和Autoprefixer一样,有免费的工具可以利用:返回搜狐,查看更多

  网站服务器一定要慎重选择,选择那些质量过硬的服务器提供商,也要充分分析考虑网站预估访问量在选择宽带和服务器配置。

  尤其是在互联网的大潮流中,优质的网站能够使企业在众多同类网站中脱颖而出,提升流量,更好留住顾客,助力企业发展。本文链接//中兴防爆,内容由欧尔成套柜架 原创并整理发布,转发请注明版权,不带版权禁止转发,谢谢返回搜狐,查看更多

  建站流程_新手搭建网站第一步!新手如何零基础快速建站(网站建设完整版)

  11、岔路:不管买dc7还是steez,起初都会经历一个过渡期,使用起来的效果甚至不如你之前处理掉的装备,不过之后是发烧一条不归路……或许你还会去烧大把的“羊”来订制专用的轮,这时候就是有钱没钱的问题了。

  使用此法最好能掌握一些选钓点的方法,将诱饵投到鱼儿经常去的地方,当然,这要有些经验。

  \u5bf9\u4e8e\u65b0\u624b\u800c\u8a00\u9009\u62e9\u4f7f\u7528ASP\u8bed\u8a00\u5efa\u7ad9\u7684\u4e3b\u8981\u539f\u56e0\u662f\u5bb9\u6613\u4e0a\u624b\uff0c\u8fd9\u4e00\u70b9\u4f5c\u4e3a\u4f9d\u7136\u662f\u83dc\u9e1f\u7684\u6211\u611f\u540c\u8eab\u53d7\u3002\u6bd4\u5982\u6211\u4e00\u76f4\u90fd\u5728\u4f7f\u7528\u7684sdcms\u5efa\u7ad9\u7cfb\u7edf\uff0c\u662fASP\u8bed\u8a00\u7cfb\u7edf\u4e2d\u6bd4\u8f83\u597d\u7528\u7684\u4e00\u4e2a\u3002\u867d\u7136\u7b80\u5355\u5bb9\u6613\u4e0a\u624b\u53ef\u662f\u540e\u671f\u5c31\u5403\u529b\u4e86\uff0c\u6bd4\u5982\u6211\u60f3\u4e8c\u6b21\u5f00\u6e90\u66f4\u591a\u529f\u80fd\u90a3\u53ef\u5c31\u590d\u6742\u4e86\uff0c\u9700\u8981\u638c\u63e1\u7684\u6280\u672f\u4e00\u70b9\u4e0d\u6bd4PHP\u5c11\u3002\u800c\u4ece\u7f51\u7ad9\u7684CSS\u6837\u5f0f\u4ee5\u53ca\u54cd\u5e94\u901f\u5ea6\u4e24\u65b9\u9762\u6765\u770b\u4e5f\u662fPHP\u66f4\u597d\u4e9b\uff0c\u7f51\u7ad9\u8fd0\u8425\u8d77\u6765\u4e0d\u53ef\u80fd\u4e00\u6210\u4e0d\u53d8\uff0cASP\u8bed\u8a00\u7684\u7f51\u7ad9\u6539\u7248\u867d\u7136\u7b80\u5355\u4f46\u662f\u6837\u5f0f\u5355\u8c03\u5c31\u90a3\u51e0\u79cd\u6837\u5f0f\uff0c\u800cPHP\u8bed\u8a00\u7f51\u7ad9\u5219\u662f\u82b1\u6837\u767e\u51fa\u3002

  用手竿垂钓如何制造这种“动”呢?非常简单:将钓线做直上直下的提放,钓饵不就动起来了吗,每次将钓饵上提20厘米左右,隔两三秒钟再提一次,连提三次,要轻提轻放,不可惊鱼。如果仍无鱼咬钩,应变换钓点。

  ).attr(src,o).hide();t(n.body).append(u),window[s]=function(){clearTimeout(a),delete r.object;var e=u[0].contentWindow,n=e.document,s=r.store=n.createElement(input);setTimeout(function(){s.addBehavior(#default#userData),n.body.appendChild(s),s.load(r.storeName),t.each(i.data,function(e,t){s.setAttribute(e,t)}),s.save(r.storeName)},30)};var a=setTimeout(function(){u.remove()},2e4)})}},set:function(e,t){this.object?this.object.set(e,t):(this.store.load(this.storeName),this.store.setAttribute(e,t),this.store.save(this.storeName))},get:function(e,t){if(this.object)return this.object.get(e,t);this.store.load(this.storeName);var n=this.store.getAttribute(e);return null!==n?n:t},remove:function(e){this.object?this.object.remove(e):this.store.removeAttribute(e)}},a={init:function(){this.data=this.data{}},set:function(e,t){this.data[e]=t},get:function(e,t){var n=this.data[e];return void 0!==n?n:t},remove:function(e){delete this.data[e]}},f=navigator.userAgent.toLowerCase(),l=f.match(/msie ([\d.]+)/),c=l&&l[1],h=6==c7==c;e.utils.storage=function(e){var t;switch(e){default:caselocal:try{t=window.localStorage?r:h?u:a}catch(e){t=a}break;casesession:try{t=window.sessionStorage?i:a}catch(e){t=a}break;casecookie:t=o()?s:a;break;casepage:t=a}return t.init&&t.init(),t},h&&u.init()}(QHPass),function(e){use strict;var t=e.$,n=立即登录,r=e.ERROR={REALNAME_EMPTY:{errno:204,errmsg:请输入您的真实姓名},REALNAME_INVALID:{errno:227,errmsg:请确认您输入的真实姓名是否有误},ACCOUNT_EMPTY:{errno:1030,errmsg:请输入360帐号},ACCOUNT_INVALID:{errno:1035,errmsg:请确认您的帐号输入是否有误},ACCOUNT_DUPLICATE:{errno:1037,errmsg:该帐号已经注册,+n},USERNAME_DUPLICATE:{errno:213,errmsg:用户名已经被使用,+n},USERNAME_EMPTY:{errno:215,errmsg:请输入用户名},USERNAME_INAPPROPRIATE:{errno:225,ermsg:用户名包含不适当内容},USERNAME_INVALID:{errno:199,errmsg:用户名应为2-14个字符,支持中英文、数字或_},USERNAME_NUMBER:{errno:200,errmsg:用户名不能全为数字},NICKNAME_EMPTY:{errno:205,errmsg:请输入昵称},NICKNAME_DUPLICATE:{errno:260,errmsg:昵称已经被使用},NICKNAME_INAPPROPRIATE:{errno:226,errmsg:昵称包含不适当内容},NICKNAME_NUMBER:{errno:262,errmsg:昵称不能全部是数字},NICKNAME_INVALID:{errno:15e3,errmsg:昵称应为2-14个字符,支持中英文、数字、_或.},EMAIL_EMPTY:{errno:203,errmsg:请输入邮箱},EMAIL_INVALID:{errno:1532,errmsg:邮箱格式有误},EMAIL_NOT_ACTIVATED:{errno:2e4},MOBILE_EMPTY:{errno:1107,errmsg:请输入手机号},MOBILE_INVALID:{errno:1100,errmsg:手机号格式有误},MOBILE_DUPLICATE:{errno:1106,errmsg:该手机号已经注册,+n},CAPTCHA_INVALID:{errno:78e3,errmsg:验证码错误请重新输入},CAPTCHA_INVALID_OLD:{errno:1670,errmsg:验证码错误请重新输入},CAPTCHA_EMPTY:{errno:78002,errmsg:请输入验证码},CAPTCHA_APPID_INVALID:{errno:1300,errmsg:验证码格式有误},SMS_TOKEN_EMPTY:{errno:1350,errmsg:请输入校验码},SMS_TOKEN_INCORRECT:{errno:1351,errmsg:校验码输入有误},PASSWORD_EMPTY:{errno:211,errmsg:请输入密码},PASSWORD_INVALID:{errno:1065,errmsg:密码长度应为6-20个字符},PASSWORD_LEVEL_LOW:{errno:54999,errmsg:密码安全级别过低},PASSWORD_WEAK:{errno:54999,errmsg:密码弱,有风险,请重新输入},PASSWORD_ORDERED:{errno:54999,errmsg:密码不能为连续字符},PASSWORD_CHAR_REPEAT:{errno:54999,errmsg:密码不能全为相同字符},PASSWORD_WRONG:{errno:220,errmsg:登录密码错误,请重新输入},PASSWORD_NOT_MATCH:{errno:1091,errmsg:两次密码输入不一致},PASSWORD_FULL_SHARP:{errno:54e3,errmsg:密码不能包含中文字符,请重新设置},IDENTIFY_EXPIRE:{errno:153e3},NOT_SIGNED_IN:{errno:1501,errmsg:用户未登陆},UNKNOWN_ERROR:{errno:999999,errmsg:未知错误},SUCCESS:{errno:0,errmsg:操作成功},TIME_OUT:{errno:1,errmsg:网络超时}},i=e.utils=e.utils{},s={1105:该手机号未注册360帐号,1402:手机号当天发送短信次数超限,201:该邮箱已经注册,+n,3e4:该手机号已经注册,请直接用手机号登录,30007:该手机号已经注册,请直接用手机号登录,65002:该帐号未开启短信登录功能,立即开启,65001:该帐号只能通过短信登录,关闭此功能,221:帐号被封禁,点此联系客服,78001:提交过于频繁,请稍后重试};t.each(r,function(e,t){t.errmsg&&t.errmsg.length0&&(s[t.errno]=t.errmsg)}),i.isSameError=function(e,t){return void 0!==e.errno&&void 0!==t.errno&&e.errno===t.errno},i.defineError=function(e,t){var n;for(var i in r)r.hasOwnProperty(i)&&r[i].errno==e&&(n=r[i],n.errmsg=t);s[e]=t},i.getErrorMsg=function(e,n){return t.isPlainObject(e)&&(n=e.errmsg,e=e.errno),s[e]n.replace(/\+/g, ).replace(/class=([]).+?\1/,class=quc-link)},i.getErrorType=function(e){switch(e=e.errnoe){case r.MOBILE_EMPTY.errno:case r.MOBILE_INVALID.errno:case r.MOBILE_DUPLICATE.errno:returnmobile;case r.EMAIL_EMPTY.errno:case r.EMAIL_INVALID.errno:returnemail;case r.USERNAME_EMPTY.errno:case r.USERNAME_INVALID.errno:case r.USERNAME_DUPLICATE.errno:case r.USERNAME_NUMBER.errno:case r.USERNAME_INAPPROPRIATE.errno:returnusername;case r.NICKNAME_EMPTY.errno:case r.NICKNAME_INVALID.errno:case r.NICKNAME_DUPLICATE.errno:case r.NICKNAME_INAPPROPRIATE.errno:case r.NICKNAME_NUMBER.errno:returnnickname;case r.ACCOUNT_EMPTY.errno:case r.ACCOUNT_INVALID.errno:case r.ACCOUNT_DUPLICATE.errno:returnaccount;case r.PASSWORD_INVALID.errno:case r.PASSWORD_EMPTY.errno:case r.PASSWORD_CHAR_REPEAT.errno:case r.PASSWORD_ORDERED.errno:case r.PASSWORD_WEAK.errno:case r.PASSWORD_WRONG.errno:case r.PASSWORD_LEVEL_LOW.errno:returnpassword;case r.PASSWORD_NOT_MATCH.errno:returnpassword-again;case r.CAPTCHA_INVALID.errno:case r.CAPTCHA_EMPTY.errno:case r.CAPTCHA_APPID_INVALID.errno:case r.CAPTCHA_INVALID_OLD.errno:returncaptcha;case r.SMS_TOKEN_EMPTY.errno:case r.SMS_TOKEN_INCORRECT.errno:returnsms-token}return e-=e>

  甩竿出线比撩投省力许多,否则一天下来甩几百次,初练者手臂有酸痛感。海竿亦可用甩钓法钓取狗鱼等凶猛鱼。也可用串钩装草把钓草鱼鲂鱼。还可用大钩粗线,甩钓噘嘴链。

  6月24日,中国社会科学院财经院创新工程重大成果《中国城市竞争力报告No.17:住房,关系国与家》在京发布。报告构建了城市综合...[详细]

  玩路亚必定会经过以下十二个阶段,谨以此文献给那些对路亚知之不多却已心向往之的朋友,敬告一句:路亚有风险,入门需谨慎,但是我们依然爱它!

  近日,记者从济南市住房和城乡建设局获悉,黄屯小区六区西侧平房区和黄屯三区平房项目房屋征收范围已经确定。按照《济南市国有土地上房...[详细]

  6月6日,市政府常务会审议通过《关于进一步推进生活垃圾分类工作的实施意见》(后简称“《实施意见》”),即将印发实施。《实施意见》要求,到2022年,全市生活垃圾分类处理系统基本建成。比“全国地级以上城市要基本建成垃圾分类处理系统”的目标,提前3年。

  信息大爆炸时代,酒香也怕巷子深。网站内容做得好,用户体验也好,但用户没人知道也是白搭。要想用户通过搜索引擎找到我们,那就必须要懂得一定的SEO技巧。

  万象更新乐居好房乐居探春解锁济南热盘带您一起把握济南买房机会百城千盘乐居济南站探盘片区章丘区——三盛璞悦湾、融创清照府、中麓府...[详细]