寫在前面:
之前踩坑css的時候,遇到滑輪,按鈕,選擇框這型別的東西,為了頁面效果,總是需要自定義他們的樣式,而不使用他們的預設樣式。當時寫的時候,我也是蠻頭疼的,弄了個demo,連結在下面。對此做個總結。本文是面向前端小白的,大手子可以跳過,寫的不好之處多多見諒。
額,今天就先大概的將程式碼貼上來,考慮到篇幅的問題,就先寫一下三個的實現方式,一般也都看得懂,程式碼註釋的非常詳細。因為細分下來內容也很多,準備之後再將如何實現的方式,屬性,優化以及如何相容各個瀏覽器的方式一步步的寫出來。
最終效果:
如何使用這些屬性?
用法很簡單,如下所示:
<input type="range">//滑動條
<input type="radio">//按鈕
<select>//選擇框
複製程式碼
input type="range"樣式修改:
html content
<div>
<input type="range" class="slider-block" id="slider" max="18" min="6" step="1" value="6">
<!--主要是一個type="range"屬性,其他的會在細分的文章裡面講出來-->
</div>
複製程式碼
csscontent
.slider-block{
outline: none; /*去掉點選時出現的外邊框*/
-webkit-appearance: none;
-moz-appearance: none;
appearance: none; /*這三個是去掉那條線原有的預設樣式,劃重點!!*/
width: 30%;
height: 0.3rem;
background: orange; /*這三個是設定滑塊下面那條線的樣式*/
}
input[type="range"]::-webkit-slider-thumb {
/*::-webkit-slider-thumb是代表給滑塊的樣式進行變更*/
-webkit-appearance: none;
-moz-appearance: none;
appearance: none; /*//這三個是去掉滑塊原有的預設樣式,劃重點!!*/
-webkit-box-shadow:0 0 2px ;/*設定滑塊的陰影*/
width: 2.6rem;
height:1.6rem;
background: url("images/js2-d_03.png");
background-size: cover; /*//這幾個是設定滑塊的樣式*/
}
//文章下面有demo連結
複製程式碼
文章下面有demo連結
程式碼裡面註釋關鍵點都寫了,還不能理解的,可以看下demo。
input type="radio"修改預設樣式
html content
<form class="task10-main-box-shape" method="post" action="#">
<!--//表單元素基本上都要加form,傳送的引數的方式,傳遞的位置,這是一個好習慣-->
<div>
<input id="shape1" name="box-shape" type="radio" checked="checked" value="shape1" />
<!--checked屬性是當頁面載入的時候選擇這個按鈕,value是傳送的值-->
<label for="shape1">對口箱</label><!--/加label標籤點選這個字的時候,可以選中按鈕-->
</div>
</form>
複製程式碼
css樣式這裡相對難點,但我註釋的已經很多了。
.task10-main-box-shape input[type="radio"]{
display: none;
/*隱藏預設按鈕的樣式,這跟其他隱藏預設按鈕的樣式的方法不一樣,注意一下*/
}
複製程式碼
.task10-main-box-shape label{ /*這裡是設定文字的樣式*/
display: inline-block;
cursor: pointer;
position: relative;
padding-left: 3rem;
margin-right: 6rem;
font-size: 1.8rem;
color: rgb(102,102,102);
}
.task10-main-box-shape label:before { /*這裡是沒被選中時候按鈕的樣式*/
content: "";
/*將要自定義的東西設定為空的字串,就可以往裡面隨意加定義的樣式了*/
display: inline-block;
background-color: #FFFFFF; /*設定背景*/
padding:0.45em; /*撐開背景,就是中間那塊白色的*/
border: 1px solid gray;
margin-right: 10px;
position: absolute;
left: 0;
bottom: 3px;
border-radius: 50%; /*設定圓角*/
}
input[type=radio]:checked + label:before {/*按鈕被選中之後的樣式,多了一個checked*/
font-size: 1px;
color: #FFFFFF;
border:0.7rem solid rgb(29,122,217);
/*設定按鈕樣式*/
}
複製程式碼
select修改預設樣式
### html cantent<div>
<select class="task10-main-box-row2-select">
<option>檢視詳情</option>
<option>我也不知道</option>
<option>詳情是什麼</option>
</select>
</div>
複製程式碼
css cantent
.task10-main-box-row2-select{
font-size: 1.6rem;
color: rgb(153,153,153);
padding: 0.3% 2% 0.3% 1%;
margin: 0; /*這裡是選擇框裡面的樣式*/
background: url("images/task10-d_03.png") no-repeat 97%;
/*97%是設定圖片,也就是三角形的位置*/
background-size:20%; /*背景圖片的尺寸*/
appearance:none;
-moz-appearance:none;
-webkit-appearance:none; /*這三個是隱藏預設樣式*/
}
複製程式碼
ps:css樣式寫的有點亂,各位看官,將就著看看,下面有demo連結。
總結
總的來說這型別的首先需要將樣式隱藏掉,然後再自行新增需要的型別,但是有些隱藏樣式的方式也不同,有些是這種,appearance:none; -moz-appearance:none; -webkit-appearance:none;
像radio按鈕的,反而是display:none;
這種型別的。還有的樣式可以寫的很好看,比如滑塊怎麼移動的時候,填充條跟著移動。會的大家都會,要琢磨的精,會別人不會的,才是你身價所在。
後話:
連續一個多星期不睡午覺,終於熬不住了。感覺身體被掏空,以後就改為下午的時候更文。因為一些事情耽擱了,直到晚上才弄好。下面幾天會逐漸把這幾個如何實現的方式,屬性,優化以及如何相容各個瀏覽器的方式一步步的寫出來,連結會放在文末的。
假裝這裡有三個連結。 range滑塊自定義樣式,步驟詳解以及實際應用
最後:希望看完的朋友點個喜歡,也可以關注一下我,現在這階段基本上每個月都不會少於十五篇文章(看到乾貨我也會進行分享)。碼字不易,感謝支援,感激不盡!
demo連結:https://obkoro1.github.io/article-demo/diy-style/diyStyle.html
以上,2017.4.16.