导航
因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异。
当然,初始化样式会对 SEO 有一定的影响,但鱼和熊掌不可兼得,但力求影响最小的情况下初始化。
最简单的初始化方法: * { padding: 0; margin: 0; }
(强烈不建议)
使用 normalize.css
优先级为:
属性的含义:
min-width
限制元素的最小宽度max-width
限制元素的最大宽度width
元素的宽度三者之间的优先级:
min-width
和 max-width
的优先级都高于 width
。即使 width
后面加上 !important
。
min-width
时,元素的 width
就会被 min-width
的值取代,浏览器出现滚动条来容纳元素。max-width
时,元素的 width
就会被 max-width
值取代。min-width
值大于 max-width
时,则以 min-width
值为准。所以三者优先级排序: min-width > max-width > width
当 min-width > width
时,以 min-width
为主
<style>
.box {
min-width: 600px;
max-width: 1000px;
/*当width值设为<600px时,盒子始终以宽600px呈现*/
/*当width值设为>1000px时,盒子始终以宽1000px呈现*/
width: 200px;
height: 100px;
background-color: red;
}
</style>
<body>
<div class="box"></div>
<div class="item"></div>
</body>
当 max-width < width
时,以 max-width
为主
<style>
.box {
min-width: 600px;
max-width: 1000px;
/*当浏览器缩放过程中,计算得到width值<min-width时,则宽度为600px*/
/*当浏览器放大程中,计算得到width值>max-width时,则宽度为1000px*/
width: 100%;
height: 100px;
background-color: red;
}
</style>
<body>
<div class="box"></div>
<div class="item"></div>
</body>
.a1 { color: red; }
.a2 { color: blue; }
.a3 { color: yellow; }
则 <span class="a2 a3 a1">test</span>
的颜色是:
A. red B. blue C.yellow D. 不确定
overflow: hidden
(缺点:阴影和下拉菜单)overflow:hidden
overflow: hidden
overflow:hidden
额外标签 clear: both
BFC父元素 overflow:hidden
伪元素
.clearfix::after {
content: "";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
display: block
行高是指一行文字的高度,具体说是两行文字间基线的距离。CSS中起高度作用的是 height 和 line-height,没有定义 height 属性,最终其表现作用一定是 line-height 。
display: none
(不占空间,不能点击)(回流+重绘)visibility: hidden
(占据空间,不可点击)(重绘)opacity: 0
(占据空间,可以点击)(重建图层,性能较高)更多:分析比较 opacity: 0、visibility: hidden、display: none 优劣和适用场景
从右向左,提高查找效率
(div p em)
例如:
p span
,浏览器首先找到所有<span>
元素,然后一直向上遍历其父元素直到根以找到<p>
元素。<span>
,一旦找到<p>
,它就知道 <span>
匹配并可以停止匹配。通过媒体查询检测不同设备屏幕尺寸做处理
.single-line-ellipsis {
width: 200px; /* 设置一个固定宽度,根据实际需求调整 */
white-space: nowrap; /* 强制文本在一行内显示 */
overflow: hidden; /* 超出宽度的部分隐藏 */
text-overflow: ellipsis; /* 用省略号表示超出的文本 */
}
.multi-line-ellipsis {
width: 200px; /* 设置一个固定宽度,根据实际需求调整 */
overflow: hidden; /* 超出宽度的部分隐藏 */
text-overflow: ellipsis; /* 这行对于多行省略号只是辅助,主要靠下面的属性 */
display: -webkit-box; /* 开启弹性伸缩盒子模型 */
-webkit-line-clamp: 3; /* 显示的行数,超出部分用省略号表示,这里设置为 3 行,可根据需求修改 */
-webkit-box-orient: vertical; /* 子元素垂直排列 */
}
<li>
换行后会产生换行字符,而它会变成一个空格,当然空格就占用一个字符的宽度。font-size: 0;
并为 li 元素重新设置 font-size: XXpx;
原因:
inline-block
行内块元素,行内元素之间有『换行(回车),空格,tab』时会产生左右间隙解决办法:
webkit-text-size-adjust: none
webkit-transform: scale(.8, .8)
多数显示器默认频率是60Hz,即1秒刷新60次,所以理论上最小间隔为1/60*1000ms = 16.7ms
注意下面代码不可修改。
<img src="1.jpg" style="width:480px!important;">
方案1:
max-width: 300px;
方案2:
transform: scale(0.625);
transform-origin: top left;
使用 CSS 样式可以避免拉伸