在Web开发中,做为前端开发人员来说,切图写样式、页面布局这些都最基础的,也是必须要会的,但在实际开发过程中,除了一些常用的CSS样式属以外,有些CSS样式属性不经常用,但是却很实用,而长时间不用就会忘记,所以在这里总结一下,以后用到时方便查阅。
前缀 | 内核 | 浏览器 |
---|---|---|
-o- | Presto | Opera(欧朋浏览器) |
-ms- | Trident | Internet Explorer(IE浏览器) |
-moz- | Gecko | Firefox(火狐浏览器) |
-webkit- | Webkit | Chrome(谷歌浏览器) ,Safari(苹果浏览器) |
使用时直接在CSS样式属性前面加上对应的前缀即可:
.box{
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
-ms-border-radius: 6px;
-o-border-radius: 6px;
border-radius: 6px;
}
如果每个CSS样式属前缀都在自己手动去加,这样太浪费时间了,可以用CSS工具插来帮助我们自动完成兼容前缀的添加。
常用的CSS工具有:less,sass,stylus,postcss,等等。
以下是从低到高的顺序排列:
!important是权重最高的
需要注意的是:当权重相等时,后面的样式 要优于(覆盖) 前面的样式。
不要使用!important
看起来!important可以快速的解决问题,但最终可能会导致大量的重写。
相反,我们应该花点时间找到CSS选择器不工作的原因并更改它。唯一可以使用的!important的地方是当您想要覆盖html中的内联样式时,但是内联样式同样也是一个坏的习惯,应该尽量的避免。
b{
color: red;
color: blue;
}
/* 这样上面这个b标签中的文字颜色将是blue,而不是red哦!! */
有时候网面中某些文本不想被选中时,user-select就排上用场啦
p{
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
user-select: none;
/*user-select样式的属性值:
none : 元素和子元素的文本将无法被选中
text : 文本可以被选中
auto : 文本将根据浏览器的默认属性进行选择
all : 当所有内容作为一个整体时可以被选择。如果双击或者在上下文上点击子元素,那么被选择的部分将是以该子元素向上回溯的最高祖先元素
contain、element : 可以选择文本,但选择范围受元素边界的约束,也就是选择的文本将包含在该元素的范围内。只支持Internet Explorer
*/
}
有时候网面中某些元素不想被鼠标点击,或 想点击 被某个元素遮盖住 的下面的元素时用。pointer-events 在除了指示该元素不是鼠标事件的目标之外,值none表示鼠标事件“穿透”该元素并且指定该元素“下面”的任何东西。
.box{
pointer-events:none; /* 如果用在表单元素上,就相当于 readonly 的效果,此时应 */
/* 当设置 pointer-events:none; 以后:
1、当前元素以及里面元素的所有鼠标事件都无效了。
2、事件会穿透当前层,也就是被当前元素遮盖住的元素可以交互(可以被点击之类的),因为穿透了当前元素。
如果要取消就用: pointer-events:auto;
*/
}
有时候在某些列表布局时,标题文字太长了就换行之类的,从而影响布局、美观,此时就可以把溢出的文件用省略号…代替。
/*1、单行文本内容超出指定长度后显示"..."*/
p{
width: 200px;
white-space: nowrap; /*超出的部分禁止换行*/
text-overflow: ellipsis; /*超出的部分以省略号...形式出现*/
overflow: hidden; /*超出的部分隐藏*/
}
/*2、多行文本内容超出指定长度后显示"..."*/
p{
width: 200px;
heigth: 100px;
display: -webkit-box; /*值必须为-webkit-box或者-webkit-inline-box*/
-webkit-box-orient: vertical; /*值必须为vertical*/
-webkit-line-clamp: 3; /*值为数字,表示一共显示几行*/
overflow: hidden; /*超出的部分隐藏*/
}
就是修改 在文本可编辑器区域内如input输入框,textarea文本框等,用来指示用户的输入具体会插入到哪里的那个一闪一闪的竖杠 | 的颜色。
input{
caret-color: red; /*将编辑器区光标设为红色*/
}
默认情况下,在浏览器中被选中的文本是蓝色的背景,白色的文字,我们也可通过::selection来修改被选中文本的样式。
::selection{
color: yellow;
background: green;
}
/* 同时设置了input 和 textarea 元素的placeholder属性样式 */
input::-webkit-input-placeholder,
textarea::-webkit-input-placeholder {
color: blue;
}
比如用在返回顶部按扭效果,不用js去计算平滑值了,用纯CSS也能当用户通过 API 触发滚动操作时,CSS 属性 scroll-behavior 为一个滚动框指定滚动行为, 平滑到达还是立即到达指定位置。 scroll-behavior
.box {
height: 500px;
border: 1px solid gray;
overflow-y: scroll;
scroll-behavior: smooth;
}
/* scroll-behavior的属性值
auto 滚动框立即滚动。
smooth 滚动框通过一个用户代理预定义的时长、使用预定义的时间函数,来实现平稳的滚动,用户代理应遵循其平台的约定,如果有的话。
*/
由于浏览器默认的滚动条样式,在项目中和某些风格太搭配时,此时就可以修改浏览器滚动条样式,注意加上兼容前缀,这里以-webkit-为例:
/*设置滚动条 整体样式*/
::-webkit-scrollbar {
width: 10px;
border-radius: 10px;
background-color: #eee;
}
/*设置滚动条 滚动轨道样式*/
::-webkit-scrollbar-track {
border-radius: 10px;
box-shadow: inset 0 0 6px rgba(0,0,0,0.6);
}
/*设置滚动条 拖动柄样式*/
::-webkit-scrollbar-thumb {
border-radius: 10px;
border: 1px solid white;
background-image: -webkit-gradient(linear, left bottom,left top, color-stop(0.1,rgb(0, 0, 200)),color-stop(0.5,rgb(0, 255, 128)),color-stop(1,rgb(0, 0, 200)));
}
css3 的 calc() 函数允许我们在属性值中执行数学操作,还可以用来对数值属性执行四则运算,特别是我们可以混合计算绝对单位(比如百分比与视口单元)与相对单位(比如像素)。
.box{
padding: calc(1vw + 1em);
width: calc(50vmax + 3rem);
font-size: calc(50vw / 3);
transform: rotate( calc(1turn + 28deg) );
background: hsl(100, calc(3 * 20%), 40%);
}
/*calc() 函数可以嵌套。在函数里边,会被视为简单的括号表达式*/
.box{
width: calc( 100% / calc(100px * 2) );
}
/*calc() 已经得到普遍支持,如果还是担心兼容问题,可以用降级方案:
对于不支持 calc() 的浏览器,整个属性值表达式将被忽略。
不过我们可以对那些不支持 calc() 的浏览器,使用一个固定值作为降级方案。
*/
.box{
width: 90%;
width: calc(100% - 50px);
}
/*实例:元素居中定位*/
/* 普通写法 */
.div{
position: absolute;
top: 50%;
left: 50%;
width: 16.666666666%;
marging-top: -150px;
margin-left: -150px;
}
/* calc() 函数写法 */
.div{
position: absolute;
width: calc(100% / 6);
top: calc(50% - 150px);
left: calc(50% - 150px);
}