本文转载于:猿2048网站关于css的总结php
写在前面 ,学好css,须要长期的推敲和积累 ,细节是不断完善的,逐渐造成本身的风格 让本身的css更加接近优雅.css
下面来总结一些我以为比较好的css代码风格 :html
这样作有一点好处:图片通常为资源 尽可能写在html中 便于后期维护 结构清晰前端
这样作还有一点要注意:这里应该使用 "background-image" 而不要偷懒 写"background",由于行内样式的权重比较高(1000),避免在外联css中设置其余背景属性设置不上;css3
在布局的时候,好比一些列表页,经常左边是一个固定大小的图,右边剩余部分展现标题,web
方法 有两种浏览器
1.100%宽的div用padding-left把左边图片的位置留出来,div元素内容的部分就是标题,图片绝对定位到padding-left区域,这样就实现了左固定右自适应,(前提是box-sizing必须是border-box,不然padding加上100%宽会超出屏幕宽度),代码以下:布局
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <style> .container{ position: relative; width: 50%; margin: 0 auto; } .left{ width: 300px; height: 300px; position:absolute; left: 0; top: 0; background: red; } .right{ box-sizing: border-box; width: 100%; height: 300px; padding-left: 300px; background: #ccc; } </style> <body> <div class="container"> <div class="left"></div> <div class="right"> 我就是左边自适应的内容 我就是左边自适应的内容 我就是左边自适应的内容 我就是左边自适应的内容 我就是左边自适应的内容 我就是左边自适应的内容 </div> </div> </body> </html>
2.父容器width100% 左边盒子宽度固定 左浮动 右边盒子 overflow:hedden(原理暂不清楚) 代码以下:字体
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> .container{ width: 100%; } .left{ float: left; width: 300px; height: 300px; background: red; } .right{ overflow: hidden; background: #ccc; height: 300px; } </style> </head> <body> <div class="container"> <div class="left">我是左边固定盒子</div> <div class="right"> 我就是左边自适应的内容 我就是左边自适应的内容 我就是 左边自适应的内容 我就是左边自适应的内容 我就是左边自适应的内容 我就是左边自适应的内容 </div> </div> </body> </html>
布局的时候从上往下开始写页面,通常都是写下一个的元素margin-top来决定和上一个元素的间距,那么就尽可能不要又是写margin-top又是写margin-bottom,若是混着用,后期很差维护,好比某一块区域须要换位置,或者是一个组件可能会被不少地方共用,混着写的话后期在改的时候,可能会麻烦一点,这里致使的问题能够说不痛不痒,可是不论是js仍是css,注重细节并养成好的习惯,是代码能力的一种体现。优化
有时候设计师,在配置字体颜色的时候可能用透明的百分比,来设置几种不一样的颜色,好比主色是#000,浅灰色#000 75%的透明度,这种状况下不建议web写透明度,而是让设计师给到对应的颜色值,由于透明色会根据背景的不一样,这样扩展性就比较差。
命名是一个让人最纠结的事情,先看第一种,这样命名的更详细能够一目了然的知道当前类的意思,可是长度比较长,增长代码量。
nav-botton-float-right
第二种使用缩略命名,会使代码更短,写起来更快,可是不易读。
nav-btn-fr
若是用缩略命名,能够约定文档,有约定和熟悉成本,可是熟悉之后更高效,类的命名也会变得更规范和统一
约定 fr为 float right
以前写边框的时候就发现,只要让边框的颜色更淡,边框看起来就更细,因此当设计师问我为何边框看起来比较粗的时候,我都告诉他们颜色调浅一点就行了,这个技巧我一直在实际使用。网上有博客说经过css3 transform的缩放scale 50%,能够实现0.5px边框,我一直很奇怪,1px实际是物理的最小单位,怎么可能实现0.5px,就这样我作了个实验,我设置了1px颜色为000的边框(黑色)
你们都知道浏览器通常不会让文字小于12px,若是设置小于12px浏览器都会显示12px, 咱们在用到rem布局的时候,元素是会根据屏幕宽度等比例缩放的,好比设计师给到750px的设计稿,若是某一个元素文字是22px,那么当用户的屏幕宽度是375的时候,文字会缩放为11px,实际浏览器就会显示为最小12像素,那么其余非字体元素比例仍然会缩小,这个时候字体可能和其余元素的比例就不是原设计稿的比例了,若是用户屏幕是320px,那么和原设计稿元素间的比例就差更多了。因此咱们必定要根据本身的状况告诉设计师(也许人家就知道),在宽是750像素的设计稿里,字体最小应该是24像素。
兼容IE就是甚至浪费人力成本,好比说IE8不支持圆角,得用图片代替,没有没有placeholder,得用JS来模拟。对于我的来讲,技术的更新换代是大势所趋,咱们要往前看,有的是东西给你学,不要在这个地方浪费青春。
要作好css,写好页面,和设计师的沟通也是很重要的一个技能,由于设计师决定页面最终要呈现的样子,要经过项目验收,也必需要设计师验收经过才行。
设计师给过来一个交互效果,前端拿到,一想交互效果还能够,可是实现成本比较高,功能都作不完,不想作这么细,而后就直接说没时间这个作不了,设计师一想这个交互很难吗,别人都能作,你为何不作,就这样来回几句就闹矛盾了,闹到产品那里去了,最后可能交互效果还得作,时间也耽误了。其实这个是不少前端会遇到的问题,时间压得紧,功能可能都要延期,还来作这些交互,天然会有点抱怨,情绪一上来,把产品和设计都得罪了,最后仍是要作,长此以往矛盾愈来愈深,沟通就愈来愈困难。 换个思路想问题,设计师大部分时候时间也很紧,要对产品和设计领导有所交代,前端又在催,好不容易作出来了,你这也不能实现那也不能实现,你这样我也无法交代啊。那么咱们换个沟通方式,好比这样说:咱们这边时间确实有点紧,这个交互比较麻烦,比较费时间,我作是能够作,只是可能会影响项目进度,你看要不我先作简单点,等到提测的时候有时间再加上这个交互,实在不行能不能等到上线以后,我单独再优化一下这个地方,很快就能上线。
设计师们仍是讲道理的,根据web上的一些特性,设计师设计出来的一些样式一些想法或许无法实现,又或者实现成本过高,咱们就得说服他们这个地方为何不能实现,由于他们不懂,因此惧怕你忽悠他们(实际有时候就有人忽悠他们),因此要想说服别人,本身必定要把问题搞清楚,把知识点理清楚,不能实现的理由对设计师说清楚,而且要有理有据,同时最好网上找到相关博客或者官方解释进行佐证。有不少矛盾和问题,就在于咱们疏忽了沟通,又或者说是咱们本身偷懒了,其实当本身把知识点能给外行说清楚了,这也说明是理解透了,也是对本身能力的提高。设计师辛苦设计的稿子必定要尽可能达到他们的效果,也要考虑扩展性和可实现性,态度很重要,不要让人以为是在敷衍他们,什么是敷衍,不解释清楚就说不作,就是敷衍,不然碰一鼻子灰只有怪本身。技术点要搞清楚,要不解释不清楚,别人不买单,在发现设计稿有问题的时候,耐心提醒其中一些不合适的地方,多帮别人承担一点,前端和设计师要友好相处。