css小细节总结javascript
一、用max-width来防止图片撑破容器css
img{java
display: inline-block;css3
max-width: 100%;web
}浏览器
二、用pointer-event 来禁用事件ui
该属性能够作:url
阻止任何点击动做的执行;spa
使连接显示为默认光标(cursor: default);orm
阻止触发hover和active状态
阻止javascript点击事件的触发
.disabled{pointer-event}
三、用user-select来禁用文本选中
IE6-9不支持该属性,能够经过给body添加onselectstart = "return false"的内联javascript语句搞定
body{user-select = none;}//页面中的文本不能被选中
四、用caret-color 来自定义光标的样式
input,textarea,[contenteditable]{ caret-color: red;}
五、用table-layout来控制表格单元格的宽度
因为表格单元的宽度根据其内容进行调整,也许你设置了表格的宽度,可是不起做用,刨根究底是由于表格有个叫作table-layout 的属性,其浏览器认知为auto在做怪,当咱们把这个值设置为fixed的时候,给th、td标签设置的宽度就能够起到做用了
table{
table-laout: fixed;
width: 100%;
}
六、用 :valid :invalid 来作表单及时验证
:required 伪类指定具备required属性的表单元素
:valid 伪类指定一个经过匹配正确的所要求的表单元素
:invalid 伪类指定一个不匹配指定要求的表单元素
<div class="container">
<div class="row" style="margin-top: 2rem;">
<form>
<div class="form-group">
<label>name</label>
<input type="text" required placeholder="请输入名称">
</div>
<div class="form-group">
<label>email</label>
<input type="email" required placeholder="请输入邮箱">
</div>
<div class="form-group">
<label>homepage</label>
<input type="url" placeholder="请输入博客url">
</div>
<div class="form-group">
<label>Comments</label>
<textarea required></textarea>
</div>
</form>
</div>
</div>
.form-group {
width: 32rem;
padding: 1rem;
border: 1px solid transparent;
}
.form-group:hover{
border-color: #eee;
transition: border .2s;
}
.form-group label {
display: block;
font-weight: normal;
}
.form-group input,.form-group textarea {
display: block;
width: 100%;
line-height: 2rem;
padding: .5rem .5rem .5rem 1rem;
border: 1px solid #ccc;
outline: none;
}
.form-group input:valid ,.form-group textarea:valid {
border-color: #429032;
box-shadow: inset 5px 0 0 #429032;
}
.form-group input:invalid ,.form-group textarea:invalid {
border-color: #D61D1D;
box-shadow: inset 5px 0 0 #D61D1D;
}
七、用:target来实现折叠面板
<div class="container">
<div class="row" style="margin-top: 2rem;">
<div class="t-collapse"><a class="collapse-target" href="#modal1">target 1</a>
<div class="collapse-body" id="modal1">
<a class="collapse-close" href="#">target 1</a>
<p>
css3 明确规定了伪类用一个冒号:来表示,而伪元素则用两个冒号::来表示。
伪类更多的定义的是状态,如:hover,或者说是一个可使用CSS进行修饰的特定的特殊元素,如:first-child
常见伪类::hover :active :focus :visited :link :lang :first-child :last-child :not
</p>
</div>
</div>
<div class="t-collapse"><a class="collapse-target" href="#modal2">target 2</a>
<div class="collapse-body" id="modal2">
<a class="collapse-close" href="#">target 2</a>
<p>
伪元素简单来讲就是不存在于DOM文档树中的虚拟的元素,它们和HTML元素同样,可是你又没法使用JavaScript去获取,如:before
常见伪元素:::before ::after ::first-letter ::first-line
</p>
</div>
</div>
</div>
</div>
.t-collapse {
border: 1px solid #ccc;
margin-top: -1px;
&:first-child {
margin-top: 0;
}
.collapse-target,.collapse-close {
cursor: pointer;
height: 3rem;
line-height: 2rem;
padding: .5rem 2rem;
text-decoration: none;
user-select: none;
background: #eee;
}
>.collapse-target {
display: block;
}
>.collapse-body {
position: relative;
display: none;
padding: 2rem;
.collapse-close {
display: none;
position: absolute;
top: -3rem;
width: 100%;
left: 0;
}
&:target {
display: block;
.collapse-close {
display: block;
border-bottom: 1px solid #ddd;
}
}
}
}
八、用:not来排除其余选择器
用以设置表单元素在readonly和disabled状态以外的hover等状态,以便于当元素在readonly和disabled时,元素不具备hover状态
@mixin buttonStyle ($border, $background, $color, $hoverBorder, $hoverBackground, $hoverColor) {
color: $color;
border-color: $border;
background-color: $background;
&:not(.readonly):not([readonly]):not(.disabled):not([disabled]) {
&:hover,
&:active {
color: $hoverColor;
border-color: $hoverBorder;
background-color: $hoverBackground;
}
}
}
九、用:nth-child(even/odd)来实现隔行变色
ul {
&.odd {
>li:nth-child(odd) {
background: red;
}
}
&.even {
>li:nth-child(even) {
background: green;
}
}
}
十、用::selection来美化选中文本
::selection{
color: #fff;
background-color: #6bc30d;
}
十一、用::paaceholder来美化占位符
input::-webkit-input-placeholder{
color: #f00;
}
input::-moz-placeholder{
color: #f00;
}
input:-ms-input-placeholder{
color: #f00;
}
十二、用::first-letter来实现段落首字下沉
p::first-letter{
font-size: 6em;
line-height: 1;
float: left;
}
1三、用 ::first-line 来特殊标记段落第一行
p::first-line{
color: red
}
1四、用 font-size:0 来清除间距
<div class="items">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
</div>
*{ box-sizing: border-box;}.items { font-size: 0; > .item { display: inline-block; width: 25%; height: 50px; border: 1px solid #ccc; text-align: center; line-height: 50px; background-color: #eee; font-size: 16px; //不要忘了给子元素设置字号 }}