CSS 不知道说些什么?!


其实一直想写一点有关CSS的文章,奈何积累不够,使用的也只是表面,没有深入。个人感觉CSS没有JavaScript那么容易水,怎么说呢,JavaScript是编程语言,所以自己有了点什么感悟,或者总结,就可以写下来,先不管对错,就这样。CSS就不一样了,你用,我用,大家都用,谁用写出来效果都是那样,也没有什么语法,而且知识点又很杂,很乱,虽然属性很多,但是平时用到的也就是那么些。盒模型,BFC等等概念要真想深入了解,Render Tree什么的一大堆就来了,很气。所以说了这么多,我都不知道我在说什么。


就是水一下...
先说一个关于盒模型的吧。

盒模型其实有2种,大家应该都知道,一种是W3C搞出来的,一种是IE搞出来的。
首先,跟着感觉走,万恶的IE搞出来的,就没什么好的,对吧?无论现在开发什么,只要一听到IE就头疼...

W3C提出的盒模型是指,盒子的宽度,高度只包含content部分,也就是内容部分。什么意思呢,就是如果你给了一个boxstylewidth等于100px,那么,它的内容部分就是100px,然后加的paddingborder都在100px之外,也就是说,你加的paddingborder都会让这个box与其他box之间的距离变大(正常文档流,你要拿绝对定位来跟我怼,那没得聊)。

IE是怎么搞的盒模型呢?同样是一个box,被加了width等于100px,那它就真的是100px了,不是content100px,而是content+padding+border100px,什么意思呢,就是你加的paddingborder无论多大,都不会改变这个box和其他box之间的距离,就是这么纯粹,paddingborder影响的,只是box自己的content大小而已,这种打碎牙往自己肚子里咽的精神值得我们学习啊。

水了这么多,到底哪种好用呢?仁者见仁智者见智了,不过网上大多数人更加喜欢W3C盒子模型,但是我更喜欢IE,虽然是万恶的IE,至少在盒模型上我还是蛮喜欢,或者说更容易接受这种模型,(说句无关的话,IE还是有很多思想很优秀的,比如事件冒泡什么的,现在很少会有人用事件捕获吧...)。

下面说一下为什么我更加喜欢IE的盒子模型:
没有首先,直接说了,因为我很懒...额,真的是懒,而且计算能力也不好,单纯的加减乘除各种不好的那种。用IE的盒模型就很好用,为什么?不用怎么计算啊!比如我要用float,一排放3个box,我直接一个width等于33%,然后用nth-child之类的,加点margin0.5%就好啦,在box内部,加paddingborder都是随便加啦,反正不会撑出去打乱布局是吧?但是如果是W3C的盒子模型,就要各种计算了,一不小心多了1px,布局就乱了。当然,你用flex布局,当我没说...

重点来了,虽然市面上默认都是W3C盒子模型,那么像我这种IE党,应该怎么做呢?很简单,只需要box-sizing:border-box,就可以变成IE的盒子模型。我一般是把它加在我的CSS reset里面...

再说一下关于background属性。
之前,在一个前端群里,有人提问,说,背景太长了,怎么让它看上去没有这么奇怪。首先,听到的第一反应是,简单嘛,直接一个background-size:100%,或者covercontain,他说他都试过了,效果不太好,图片长是宽的2倍多,会被拉变形或者显示不完全。首先,调侃了一下UI提供的这张背景图,然后就开始想应该怎么办。我跟他说,要不你试试background-attachment:fixed?他试了之后,说,完美解决。好吧,这个属性也是我和一个朋友偶然间看腾讯的手机官网发现的,当时以为是div固定然后做的背景,后来看源码分析了一波,才知道还有background-attachment这种逆天的属性,CSS1就有了,但是不知道为什么普及度很低的样子。像我这种,懒,不愿意计算背景大小的时候,就用background-attachment:fixed,不仅简单,还让页面多了一种感觉。

在说一下,绝对定位。
不知道在哪里看到的,有人说绝对定位是魔鬼(evil)。
我刚学CSS的时候,可喜欢这个属性了,不知道怎么排版?绝对定位啊,一个元素怎么摆放都摆放不好,绝对定位啊......好吧,这种想法,让我埋下了不少的坑。
有个很典型的,绝对定位的子元素,高度不定,父元素想height:auto,让子元素撑起一片天,这是不可能的。都脱离文档流了,还撑什么天.....
还有一些恶习,比如,用了绝对定位,就一定要用相对定位把他包裹起来,然后left什么的,其实这都是没必要的,需要绝对定位+相对定位来处理的情况很少很少。
还有一些关于绝对定位的小技巧,不要用left等属性,而用margin-left等属性,为什么?因为使用绝对定位无非就是想让该元素脱离文档流,然后做一些‘高难度动作’,如果它的父元素全是static,那么它的left等一系列定位都是根据body,根据body啊,很难以控制和琢磨的有木有?所有很多人给它的父元素来一个相对定位,来管理它。但是,我说但是,如果我们不使用left等属性,而是用margin-left这种相对温柔一点的属性,它就还在掌握之中,依旧在射程之内。
所以,学会用position:absolute+margin,而不是position:absolute+position:relative

说一下box-shadow
又爱又恨的一个属性,很厉害,很酷炫,和border-radius差不多,满足了广大前端工程师和UI设计师的很多需求。说句无关的,border-radius:50%border-radius:100%一般情况下没差,为什么?有点复杂,一句话来说,就是浏览器不允许一个盒子的弧度过大而显得不和谐,为了让它和谐,最终就和谐成了一个圆....所以要做一个圆的话,border-radius:50%border-radius:100%之间的任何一个百分比都能满足你。说回来,box-shadow也算是很厉害的一个属性了,还有text-shadow,但是它们刚出来的时候很少被人用,为什么?性能要求太高了,当时的浏览器很差劲的,渲染相当吃力,卡卡的,所以没人用。现在不一样了,浏览器都可以玩大型游戏了!性能杠杠的,所以这些属性就又复活了,或者说活跃了起来。box-shadow具体的属性值,我们就不介绍了,它有个相当酷炫的设定,那就是,可以有任意多组值。什么意思呢?无论多少组值,都是可以渲染出来的。理论上说,我们把每一组值当成一幅图的1px(本来图片就是1px1px堆叠出来的),box-shadow可以完美构成任意图!这不是我的异想天开,也不是什么黑科技,早就有类似的组件出现了...不过这样构图缺点很明显,构建一幅图的成本太高了,所以没有推广。其实用在一些小图标上还是很赞的,当然,小图标方面有SVG压着,自然没有出头之日了。

这些都不是重点!

关于box-shadow还有一些有点坑的地方。比如,如何构建一个三角形,带阴影的三角形..
构建三角形很简单,网上一大堆嘛。用border做的,但是,一旦加上了box-shadow,就原形毕露了...很气,纠结了很久,没办法,后来有人跟我说,你试试filter:drop-shadow,好吧,完美解决...

之后,我就看了一下filter:drop-shadow,发现和box-shadow差不多,其实差很多...filter:drop-shadow是真正的投影,透明的地方是没影子的,不透明的地方才投影,而box-shadow是盒子的投影,哎,其实看名字就应该明白这个道理了...还有一点,filter:drop-shadow只能投影一次,不能像box-shadow一样,无限叠加。

其实CSS的坑还是蛮多的,很多是因为自己掌握的不够全面,理解不够透彻,而且没办法及时的归纳总结。好吧,先说到这里,码了这么多字,我都不知道我在说些什么...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,737评论 1 92
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 2,304评论 0 11
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 1,733评论 0 2
  • H5移动端知识点总结 阅读目录 移动开发基本知识点 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇阅读 4,437评论 0 26
  • 1、属性选择器:id选择器 # 通过id 来选择类名选择器 . 通过类名来选择属性选择器 ...
    Yuann阅读 1,621评论 0 7