1. 程式人生 > >css小細節總結

css小細節總結

ott 內容 left fault -1 isa 單元格 :hover javascrip

css小細節總結

1、用max-width來防止圖片撐破容器

img{

  display: inline-block;

  max-width: 100%;

}

2、用pointer-event 來禁用事件

該屬性可以做:

  阻止任何點擊動作的執行;

  使鏈接顯示為默認光標(cursor: default);

  阻止觸發hover和active狀態

  阻止javascript點擊事件的觸發

.disabled{pointer-event}

3、用user-select來禁用文本選中

IE6-9不支持該屬性,可以通過給body添加onselectstart = "return false"的內聯javascript語句搞定

body{user-select = none;}//頁面中的文本不能被選中

4、用caret-color 來自定義光標的樣式

input,textarea,[contenteditable]{ caret-color: red;}

5、用table-layout來控制表格單元格的寬度

由於表格單元的寬度根據其內容進行調整,也許你設置了表格的寬度,但是不起作用,刨根究底是因為表格有個叫做table-layout 的屬性,其瀏覽器認知為auto在作怪,當我們把這個值設置為fixed的時候,給th、td標簽設置的寬度就可以起到作用了

table{

  table-laout: fixed;

  width: 100%;

}

6、用 :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;
}

7、用: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;
}
}
}
}

8、用: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;
}
}
}

9、用:nth-child(even/odd)來實現隔行變色

ul {
&.odd {
>li:nth-child(odd) {
background: red;
}
}
&.even {
>li:nth-child(even) {
background: green;
}
}
}

10、用::selection來美化選中文本

::selection{
color: #fff;
background-color: #6bc30d;
}

11、用::paaceholder來美化占位符

input::-webkit-input-placeholder{
color: #f00;
}
input::-moz-placeholder{
color: #f00;
}
input:-ms-input-placeholder{
color: #f00;
}

12、用::first-letter來實現段落首字下沈

p::first-letter{
font-size: 6em;
line-height: 1;
float: left;
}

13、::first-line 來特殊標記段落第一行

p::first-line{
color: red
}

14、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; //不要忘了給子元素設置字號
}
}

css小細節總結