FAQ?
画一条0.5px的线
- 采用meta viewport的方式
1px像素线条 :
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=0">
0.5像素线条:
<meta name="viewport" content="width=device-width,initial-scale=0.5,user-scalable=0">
- 采用 border-image的方式 首先需要自己制作一个0.5像素的线条作为线条背景图片。
p{ border-width: 0 0 1px 0; border-image: imageUrl 2 0 round; }
- 采用transform: scale()的方式 推荐
transform: scaleY(0.5);
transform-origin: 50% 100%;
link标签和import标签的区别
- 本质区别:link是html的一个标签,除了导入css文件外,还可以定义其他事物,而import是css的法则,只供给css加载文件
- DOM:DOM可以控制文档中的所有元素,可以插入link修改样式,不可以操作import
- 权重优先级:link的修改样式的优先级高于import
- 加载顺序:link导入的css文件随着页面加载而加载,import等到页面加载完毕,再加载
- 兼容性:link作为html标签没有兼容性问题,而import不兼容ie5及以下
说一下块元素和行元素
块元素:独占一行,并且有自动填满父元素,可以设置 margin 和 pading 以及高度和宽度
行元素:不会独占一行,width 和 height 会失效,并且在垂直方向的 padding 和margin 会失效。
多行元素的文本省略号
/* 单行文本溢出显示省略号 */
.div1 p{
white-space: nowrap; /* 文本超过容器最大宽度不换行(若文本自动显示在一行则不需要这个属性) */
overflow: hidden; /* 本文超出容器最大宽度的部分不显示 */
text-overflow: ellipsis; /* 文本超出容器最大宽度时显示三个点 */
}
/* 多行文本溢出显示省略符 */
.div2 p{
word-break: break-word; /* 文本默认显示在一行时,需要添加该属性,让超出的文本换行 */
overflow:hidden;
display:-webkit-box; /* 让容器变成一个弹性伸缩盒子 */
-webkit-line-clamp:2; /* 最大显示的文本行数 */
-webkit-box-orient:vertical; /* 设置或检索伸缩盒对象的子元素纵向排列 */
}
visibility opacity display
visibility=hidden, opacity=0,display:none
opacity=0,该元素隐藏起来了,但不会改变页面布局,并且,如果该元素已经绑定一些事件,如 click 事件,那么点击该区域,也能触发点击事件的
visibility=hidden,该元素隐藏起来了,但不会改变页面布局,但是不会触发该元素已经绑定的事件
display=none,把元素隐藏起来,并且会改变页面布局,可以理解成在页面中把该元素删除掉一样。
双边距重叠问题(外边距折叠)
多个相邻(兄弟或者父子关系)普通流的块元素垂直方向 marigin 会重叠
折叠的结果为:
两个相邻的外边距都是正数时,折叠结果是它们两者之间较大的值。 两个相邻的外边距都是负数时,折叠结果是两者绝对值的较大值。 两个外边距一正一负时,折叠结果是两者的相加的和。
position属性比较
固定定位 fixed:
元素的位置相对于浏览器窗口是固定位置,即使窗口是滚动的它也不会移动。Fixed 定位 使元素的位置与文档流无关,因此不占据空间。 Fixed 定位的元素和其他元素重叠。
相对定位 relative:
如果对一个元素进行相对定位,它将出现在它所在的位置上。然后,可以通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动。 在使用相对定位时,无论是否进行移动,元素仍然占据原来的空间。因此,移动元素会导致它覆盖其它框。
绝对定位 absolute:
绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html>
。 absolute 定位使元素的位置与文档流无关,因此不占据空间。 absolute 定位的元素和其他元素重叠。
粘性定位 sticky:
元素先按照普通文档流定位,然后相对于该元素在流中的 flow root(BFC)和containing block(最近的块级祖先元素)定位。而后,元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位。
默认定位 Static:
默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者z-index 声明)。
inherit:
规定应该从父元素继承 position 属性的值。
浮动清除
方法一:使用带 clear 属性的空元素
在浮动元素后使用一个空元素如<div class="clear"></div>
,并在 CSS 中赋予.clear{clear:both;}
属性即可清理浮动。亦可使用<br class="clear" />
或<hrclass="clear" />
来进行清理。
方法二:使用 CSS 的 overflow 属性
给浮动元素的容器添加 overflow:hidden;或 overflow:auto;可以清除浮动,另外在IE6 中还需要触发 hasLayout ,例如为父元素设置容器宽高或设置 zoom:1。在添加 overflow 属性后,浮动元素又回到了容器层,把容器高度撑起,达到了清理浮动的效果。
方法三:给浮动的元素的容器添加浮动
给浮动元素的容器也添加上浮动属性即可清除内部浮动,但是这样会使其整体浮动,影响布局,不推荐使用。
方法四:使用邻接元素处理
什么都不做,给浮动元素后面的元素添加 clear 属性。
方法五:使用 CSS 的:after 伪元素
结合:after 伪元素(注意这不是伪类,而是伪元素,代表一个元素之后最近的元素)和 IEhack ,可以完美兼容当前主流的各大浏览器,这里的 IEhack 指的是触发hasLayout。
给浮动元素的容器添加一个 clearfix 的 class,然后给这个 class 添加一个:after 伪元素实现元素末尾添加一个看不见的块元素(Block element)清理浮动。
css3新特性
开放题。CSS3 边框如 border-radius,box-shadow 等;CSS3 背景如 background-size,background-origin 等;CSS3 2D,3D 转换如 transform 等;CSS3 动画如animation 等。
怎么样让一个元素消失,讲讲
- display:none;
把元素隐藏起来, 并且会改变页面布局,可以理解成在页面中把该元素删除掉。当display设置为none,任何对该元素直接的用户交互操作都不可能生效。
- visibility:hidden;
该元素隐藏起来了,不会改变页面布局,仍占据原有空间,但不会触发该元素已经绑定的事件。
- opacity:0;filter:alpha(opacity=0);
该元素隐藏起来了,但不会改变页面布局,并且,如果该元素已经绑定一些事件,如click事件,那么点击该区域,也能触发点击事件的它只是一种视觉隐藏,将元素变得透明。元素本身依旧占用它的位置。
- z-index:-1000;
将元素隐藏不占据空间,会改变页面布局,不能进行交互事件
- position:absolute;top:-1000px;left:-1000px;
这个方法是通过将left和top的值设的很大,让元素定位到浏览器外面。不占据空间,不能点击 将定位方式设置为relative或者fixed然后将其定位到浏览器外面可以达到同样的效果,区别在于使用relative定位仍会占有原有的空间,而使用absolute以及fixed定位不占据空间
- transform:rotateY(90deg);
使用3d旋转,使元素隐藏,旋转x轴也可以达到同样的效果,要注意的是,css3 3D转换元素进行使用的时候,必须给父元素添加transform-style:preserve-3d;perspective:1000px;用于提供3D空间,以及设置景深
- transform: scale(0,0)
通过缩放达到元素消失的视觉效果,元素仍占据空间
- width:0;height:0;overflow:hidden;