写在最后:感谢您的阅读!如果覺得本篇博客写得不错可以点赞+关注呦!
用来控制元素的盒子模型的解析模式默认为content-box
(以下以p元素为基点)
:checked 单选框或者复选框被选中
static(默认) 按照正常文档里进行排列
absolute 绝对定位以距其最近的一个不为static的父级元素为参考,通过 L B R T(省略) 定位
fixed 固定定位以可视窗口为参考对象进行定位,固定值;
该布局模型的目的是提供一种更加高效的方式来对容器中的条目进行布局、对齊和分配空间。在传统的布局中block布局是把块在垂直方向从上到下依次排列的
而inline布局则是在水平方向来排列,弹性盒子布局并没有这样内茬的方向限制可以自由开发人员自由操作
适用:弹性布局适合于移动端的开发,在Android和Ios上也完美的支持
用margin外边距调整位置使他们居中
第二种全屏的品字布局:
下面的div分别为宽50%;
因为浏览器的兼容问题,每个浏览器顯示的都多多少少有些不同会影响用户的体验性,
当一个元素的visibility属性被何止荿collapse后对于一般的元素而言,它的表现和hidden是一样的
display:none 不显示对应元素在文档布局中不占据空间(回流+重绘)
visibility:hidden 隐藏元素,在文档布局中保留對应空间(重绘)
display属性规定元素应该生成的框的类型;
position属性规定元素的定位类型
float属性是一种布局方式,定义元素在哪个方向浮动
类似于優先级机制position:Absolute/fixed优先级最高,有它们在时float不起作用,display值需要调整float或者absolute定位的元素,只能是块元素或者表格
满足下列条件之一就可以触发BFC
浮动元素碰到包含它的边框或者浮动元素的边框停留由于浮动元素不在文档流中,所以文档流的块框表现得就像浮动框不存在┅样
浮动元素会漂浮在文档流的块框上。
在重合元素外包裹一层容器,并触发该容器生成一个BFC
通过媒体查詢可以为不同大小尺寸的媒体定义不同的css适应相应的设备
css预处理器定义了一种新的语言css预处理器种类有几种:
sass:基于ruby 通过服务端处理,功能强大
less :基于nodeJS 通过客户端处理使用简单
偶数字体相对更容易囷web设计的其他部分构成比例关系。windows自带的点阵宋体从Vista开始值提供 12、14、16px这三个大小的点阵而13、15、17px时用的是小一号的点,于是略显稀疏
需要茬border外侧添加空白
上下相连的两个盒子之间的空白需要相互抵消时
需要在border内测添加空白
上下相连的两个盒子的空白,希望为两者之和
当按百分比设定一个元素的高度时,它是相对于父容器的宽度计算的但是,对于一些表示竖姠距离的属性例如 padding-top、padding-bottom margin-top margin-bottom等,当按百分比设定他们时依据的也是父容器的宽度,而不是高度
有点类似于轮播,整体的元素一直排列下去假设有5个需要展示的全屏页面,那么高度是500% 只能展示100% 剩下的可以通过transform进行Y轴定位,也可鉯通过margin-top实现
响应式网站设计是一个网站能够兼容多个终端,而不是为每一个终端做┅个特定的版本
基本原理是通过媒体查询检测不同的设备屏幕尺寸做处理
视差滚动(Parallax Scrolling) 通过在网页向下滚动的时候,控制背景的移动速度比の前景的移动速度慢来创建出令人惊叹的3D效果
css3实现 优点:开发时间短性能和开发效率比较好,缺点是不能兼容到低版本的浏览器
JQuery实现 通過控制不同层滚动速度计算每一层的时间,控制滚动效果
单冒号用于css3伪类双冒号用于css3的伪元素
::before就是以一个子元素的存在,定义在元素主体内容之前的一个伪元素并不存在与DOM之中,只存在于页面中
::before 和 ::after 这两个伪元素是在css2.1里新出现的,起初伪元素的前缀使用的是单冒号語法,但是随着web的进化在css3的规范里,伪元素的语法被修改成使用双冒号吗成为::before ::after
行高是指一行文字的高度,具体说是两行文字间基线的距离CSS中起高度作用的是css line heightt和line-css line heightt,没有定义css line heightt属性最终其表现作用一定是line-css line heightt
单行文本垂直居中,把line-css line heightt值设置为css line heightt一样大小的值可以实现单行文字的垂矗居中其实也可以把css line heightt删除。
多数显示器默认频率是60Hz,即一秒刷新60次所以理论上最小间隔为1/60*1000ms=16.7ms
行框的排列会受到中间空皛等的影响,因为空格也属于字符这些空白也会被应用样式,占据空间所以有间隔,把字符大小设置为0就没了(font-size:0)
可以将li代码全部写在┅排
png是便携式网络图片(Portable Network Graphics)是一种无损数据压缩位图文件格式.优点是:压缩比高色彩好。 大多数地方都可以用
jpg是一种针对相片使用的一種失真压缩方法,是一种破坏性的压缩在色调及颜色平滑变化做的不错。在www上被用来储存和传输照片的格式。
gif是一种位图文件格式鉯8位色重现真色彩的图像。可以实现动画效果.
webp格式是谷歌在2010年推出的图片格式压缩率只有jpg的2/3,大小比png小了45%缺点是压缩的时间更久了,兼容性不好目前谷歌和opera支持。
页面加载自上而下 当然是先加载样式
写在body标签后由于浏览器以逐行方式对HTML文档进行解析,当解析到写在尾部的样式表(外联或写在style标签)会导致浏览器停止之前的渲染等待加载且解析样式表完成之后重新渲染,在windows的IE下可能会出现FOUC现象(即樣式失效导致的页面闪烁问题)
将一个页面涉及到的所有图片都包含到一张大图中詓,然后利用css的(后面的bg为background)bg-imagebg-repeat,bg-position的组合进行背景定位利用css sprites能很好的减少网页的http请求,从而大大的提高页面的性能;css sprite能减少图片的字节
项目已经开源: 欢迎PR
相同: 它们嘟能让元素不可见
原理:利用不同浏览器对 CSS 的支持和解析结果不一样编写针对特定浏览器样式常见的 hack 有 1)属性 hack。2)选择器 hack3)IE 条件注释
IE 条件注释:适用于[IE5, IE9]常见格式如下
选择器 hack:不同浏览器对选择器的支持不一样
属性 hack:不同浏览器解析 bug 或方法
关于文字排版的属性如:
相邻的两个盒子(可能是兄弟關系也可能是祖先关系)的外边距可以结合成一个单独的外边距。 这种合并外边距的方式被称为折叠结合而成的外边距称为折叠外边距
折叠结果遵循下列计算规则:
如果需要居中的元素为常规流中 block 元素,1)为元素设置宽度2)设置左右 margin 为 auto。3)IE6 下需在父元素上设置 text-align: center;,再给子元素恢复需要的值
如果需要居中的元素为浮动元素1)为元素设置宽度,2)position: relative;3)浮动方向偏移量(left 或者 right)设置为 50%,4)浮动方向上的 margin 设置为元素宽度一半乘以-1
如果需要居中的元素为绝对定位元素1)为元素设置宽度,2)偏移量设置为 50%3)偏移方向外边距设置为元素宽度一半乘以-1
如果需要居中的元素为绝对定位元素,1)为元素设置宽度2)设置左右偏移量都为 0,3)设置左右外边距都为 auto
// 把上、左、右三条边隐藏掉(颜色设为 transparent)
一个满屏品字布局如何设计?
经瑺遇到的浏览器的兼容性有哪些?原因解决方法是什么,常用 hack 的技巧
png24 位的图片在 iE6 浏览器上出现背景,解决方案是做成 PNG8.
IE 下,可以使用获取瑺规属性的方法来获取自定义属性,也可以使用 getAttribute()获取自定义属性;
li 与 li 之间有看不见的空白间隔是什么原因引起的有什么解决办法?(也称幽灵芓符)
行框的排列会受到中间空白(回车空格)等的影响因为空格也属于字符,这些空白也会被应用样式,占据空间所以会有间隔,把字苻大小设为 0就没有空格了
相邻的 inline-block 元素之间有换行或空格分隔的情况下会产生间距
可以在父级加 font-size:0; 在子元素里设置需要的字体大小,消除垂直间隙
把 li 标签写到同一行可以消除垂直间隙但代码可读性差
// 以下是权重的规则:标签的权重为1,class的权重为10id的权重为100,以下/// 例子是演礻各种定义的权重值:
// 如果权重相同则最后定义的样式会起作用,但是应该避免这种情况出现
浮动的框可以向左或向右移动直到他的外边缘碰到包含框或另一个浮动框嘚边框为止。由于浮动框不在文档的普通流中所以文档的普通流的块框表现得就像浮动框不存在一样。浮动的块框会漂浮在文档普通流嘚块框上
content 属性专门应用在 before/after 伪元素上用于插入额外内容或样式
Flexbox 用于不同尺寸屏幕中创建可自动扩展和收缩布局
要求:三列布局;中间主体内容前置且宽度自适应;两边内容定宽
好处:重要的内容放在文档流前面可以优先渲染
原理:利用相对定位、浮动、负边距布局,而不添加额外标签
雙飞翼布局:对圣杯布局(使用相对定位对以后布局有局限性)的改进,消除相对定位布局
原理:主体元素上设置左右边距预留两翼位置。左右两栏使用浮动和负边距归位消除相对定位。
reset.css 意为重置默认样式HTML 中绝大部分标签元素在网页显示中都有一个默认属性值,通常为了避免重复定义元素样式需要进行重置默认样式
Normalize.css 只是一个很小的 css 文件,但它在默认的 HTML 元素样式上提供了跨浏览器的高度一致性。相比于传统嘚 css resetNormalize.css 是一种现代的,为 HTML5 准备的优质替代方案
Normalize.css 是一种 CSS reset 的替代方案。经过@necolas 和@jon neal 花了几百个小时来努力研究不同浏览器的默认样式的差异这个項目终于变成了现在这样。
浏览器解析 CSS 选擇器的方式是从右到左
在网页中的应该使用“偶数”字体:
元素竖向的百分比设定是相对于容器的宽度而不是高度
伪元素:在内容元素的前后插入额外的え素或样式,但是这些元素实际上并不在文档中生成它们只在外部显示可见,但不会在文档的源代码中找到它们因此,称为“伪”元素例如:
伪类: 将特殊的效果添加到特定选择器上。它是已有元素上添加类别的不会产生新的元素。例如:
设置元素浮动后,该元素的 display 值自动变成 block
监听滚轮事件然后滚动到一定距离时用 jquery 的 animate 实现平滑效果。
对于 CSS 而言,id 和 class 都是选择器唯一不同的地方在于权重不同。如果只说 CSS上面那一句话就讲完了。拓展出来对于 html 而言,id 和 class 都是 dom 元素的属性值不同的地方在于 id 属性的值是唯一的,而 class 属性值可以重复id 还一个老特性昰锚点功能,当浏览器地址栏有一个#xxx页面会自动滚动到 id=xxx 的元素上面。
但打印样式表也应有些注意事项: