Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
為大家介紹使用 CSS 來制作按鈕。
基本按鈕樣式
默認(rèn)按鈕 CSS 按鈕
CSS 實例
.button {
background-color: #4CAF50; /* Green */
border: none;
color: white;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
}
按鈕顏色
GreenBlueRedGrayBlack
我們可以使用 background-color
屬性來設(shè)置按鈕顏色:
CSS 實例
.button1 {background-color: #4CAF50;} /* Green */
.button2 {background-color: #008CBA;} /* Blue */
.button3 {background-color: #f44336;} /* Red */
.button4 {background-color: #e7e7e7; color: black;} /* Gray */
.button5 {background-color: #555555;} /* Black */
嘗試一下 ?
按鈕大小
10px12px16px20px24px
我們可以使用 font-size
屬性來設(shè)置按鈕大小:
CSS 實例
.button1 {font-size: 10px;}
.button2 {font-size: 12px;}
.button3 {font-size: 16px;}
.button4 {font-size: 20px;}
.button5 {font-size: 24px;}
圓角按鈕
2px4px8px12px50%
我們可以使用 border-radius
屬性來設(shè)置圓角按鈕:
CSS 實例
.button1 {border-radius: 2px;}
.button2 {border-radius: 4px;}
.button3 {border-radius: 8px;}
.button4 {border-radius: 12px;}
.button5 {border-radius: 50%;}
嘗試一下 ?
按鈕邊框顏色
綠藍(lán)紅灰黑
我們可以使用 border
屬性設(shè)置按鈕邊框顏色:
CSS 實例
.button1 {
background-color: white;
color: black;
border: 2px solid #4CAF50; /* Green */
}
...
嘗試一下 ?
鼠標(biāo)懸停按鈕
綠藍(lán)紅灰黑
綠藍(lán)紅灰黑
我們可以使用 :hover
選擇器來修改鼠標(biāo)懸停在按鈕上的樣式。
提示: 我們可以使用 transition-duration
屬性來設(shè)置 "hover" 效果的速度:
CSS 實例
.button {
-webkit-transition-duration: 0.4s; /* Safari */
transition-duration: 0.4s;
}
.button:hover {
background-color: #4CAF50; /* Green */
color: white;
}
...
按鈕陰影
陰影按鈕鼠標(biāo)懸停后顯示陰影
我們可以使用 box-shadow
屬性來為按鈕添加陰影:
CSS 實例
.button1 {
box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2), 0 6px 20px 0 rgba(0,0,0,0.19);
}
.button2:hover {
box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24), 0 17px 50px 0 rgba(0,0,0,0.19);
}
嘗試一下 ?
禁用按鈕
正常按鈕禁用按鈕
我們可以使用 opacity
屬性為按鈕添加透明度 (看起來類似 "disabled" 屬性效果)。
提示: 我么可以添加 cursor
屬性并設(shè)置為 "not-allowed" 來設(shè)置一個禁用的圖片:
CSS 實例
.disabled {
opacity: 0.6;
cursor: not-allowed;
}
嘗試一下 ?
按鈕寬度
250px
50%100%
默認(rèn)情況下,按鈕的大小有按鈕上的文本內(nèi)容決定( 根據(jù)文本內(nèi)容匹配長度 )。 我們可以使用 width
屬性來設(shè)置按鈕的寬度:
提示: 如果要設(shè)置固定寬度可以使用像素 (px) 為單位,如果要設(shè)置響應(yīng)式的按鈕可以設(shè)置為百分比。
CSS 實例
.button1 {width: 250px;}
.button2 {width: 50%;}
.button3 {width: 100%;}
嘗試一下 ?
按鈕組
ButtonButtonButtonButton
移除外邊距并添加 float:left
來設(shè)置按鈕組:
CSS 實例
.button {
float: left;
}
嘗試一下 ?
帶邊框按鈕組
ButtonButtonButtonButton
我們可以使用 border
屬性來設(shè)置帶邊框的按鈕組:
CSS 實例
.button {
float: left;
border: 1px solid green
}
嘗試一下 ?
按鈕動畫
CSS 實例
鼠標(biāo)移動到按鈕上后添加箭頭標(biāo)記:
Hover
嘗試一下 ?
CSS 實例
點擊時添加 "波紋" 效果:
Click
CSS 實例
點擊時添加 "壓下" 效果:
Click
如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!
一篇文章Stimulus:連接HTML和JavaScript的橋梁,實現(xiàn)簡單的controller,并學(xué)習(xí)了Stimulus是如何連接HTML與JavaScript的?,F(xiàn)在我們使用Stimulus來實現(xiàn)復(fù)制文本到粘貼板的按鈕。
比如說,我們現(xiàn)在有一個需求,就是幫助用戶生成密碼,在密碼旁邊放置一個按鈕,點擊按鈕后密碼就被拷貝到粘貼板上了,這樣就方便用戶使用這個密碼了。
打開public/index.html,修改body內(nèi)容,填充一個簡單的按鈕,如下:
<div>
PIN: <input type="text" value="1234" readonly>
<button>Copy to Clipboard</button>
</div>
下一步,創(chuàng)建src/controllers/clipboard_controller.js,然后添加一個copy()方法:
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
copy() {
}
}
然后,給div添加data-controller=“clipboard”。只要是給元素添加了data-controller屬性,Stimulus就會連接一個controller實例。
<div data-controller="clipboard">
我們還需要一個對輸入框的引用,這樣我們就可以在調(diào)用粘貼板API之前獲取輸入框的內(nèi)容。給文本框添加data-clipboard-target=“source“:
PIN: <input data-clipboard-target="source" type="text" value="1234" readonly>
在controller中定義一個target,然后就可以通過this.sourceTarget訪問文本框了。
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
static targets = [ "source" ]
copy() {
}
}
解釋一下這個targets:
當(dāng)Stimulus加載你的controller類時,它會查看靜態(tài)數(shù)組targets的字符串元素,對于每一個字符串,Stimulus會在controller中添加3個屬性。在這里,對于“source”,會添加如下屬性:
this.sourceTarget 在controller的域內(nèi)的第一個source
this.sourceTargets 在controller的域內(nèi)所有的source組成的一個數(shù)組
this.hasSourceTarget 在controller的域內(nèi)是否有source
我們希望點擊按鈕時調(diào)用controller中的copy()方法,所以我們需要添加data-action=“clipboard#copy“
<button data-action="clipboard#copy">Copy to Clipboard</button>
你可以已經(jīng)注意到在上面的動作描述符中省略了click->。那是因為Stimulus給button設(shè)置了click作為它默認(rèn)的事件。
某些其他元素也有默認(rèn)事件。下面是個全部列表:
元素 | 默認(rèn)事件 |
a | click |
button | click |
details | toggle |
form | submit |
input | input |
input type=“submit” | click |
select | change |
textarea | input |
最終,在copy()方法中,我們獲取輸入框的內(nèi)容,調(diào)用粘貼板API
copy() {
navigator.clipboard.writeText(this.sourceTarget.value)
}
刷新頁面,點擊按鈕,然后快捷鍵粘貼到Greet按鈕前到輸入框,可以看到1234。
到目前為止,在頁面上同一時間只有一個controller實例。在頁面上同時有一個controller的多個實例也是很正常的。
我們的controller是可以復(fù)用的,只要你需要在頁面上添加復(fù)制內(nèi)容的按鈕,無論是哪個頁面,只要把對應(yīng)的屬性值寫好,我們的controller都是生效的。
還是上面的例子,再添加另外一個復(fù)制按鈕:
<div data-controller="clipboard">
PIN: <input data-clipboard-target="source" type="text" value="3737" readonly>
<button data-action="clipboard#copy" class="clipboard-button">Copy to Clipboard</button>
</div>
刷新頁面,驗證一下兩個復(fù)制按鈕是否都生效。
我們再添加一個可以復(fù)制的元素,不用button,我們用a標(biāo)簽,
<div data-controller="clipboard">
PIN: <input data-clipboard-target="source" type="text" value="6666" readonly>
<a href="#" data-action="clipboard#copy" class="clipboard-button">Copy to Clipboard</a>
</div>
Stimulus允許我們使用任何元素,只要它設(shè)置了合適的data-action屬性,就可以觸發(fā)復(fù)制。
這個例子里,要注意一點,點擊鏈接會使瀏覽器追蹤a標(biāo)簽內(nèi)的href屬性跳轉(zhuǎn),可以取消這種默認(rèn)行為,只需要在action中調(diào)用 event.preventDefault()就可以了。
copy(event) {
event.preventDefault()
navigator.clipboard.writeText(this.sourceTarget.value)
}
還有另外一個方法,拷貝粘貼板上
copy(event) {
event.preventDefault()
this.sourceTarget.select()
document.execCommand("copy")
}
在本文中,我們看了一個在現(xiàn)實中把瀏覽器API包裝在Stimulus的controller中的例子。還有一個controller的多個實例如何同時出現(xiàn)在頁面上,我們還探索了actions和targets如何保持HTML和JavaScript的松散耦合。
下一篇文章,我們將優(yōu)化一下這個復(fù)制粘貼板的功能,讓它運行起來更加健壯。
Stimulus:瀏覽器不支持復(fù)制或者弱網(wǎng)條件下,怎么辦?
文中我們對CSS超炫加載動畫設(shè)計、實現(xiàn)與實例進(jìn)行了講解與說明,通過學(xué)習(xí)可知使用CSS提供的animation屬性及偽元素等可以實現(xiàn)精美的CSS動畫效果的設(shè)計與開發(fā)。本文我們將繼續(xù)介紹CSS在Web頁面元素設(shè)計中的應(yīng)用。
純CSS實現(xiàn)開關(guān)元素設(shè)計
本例我們使用CSS完成開關(guān)的設(shè)計,主要要求是在點擊開關(guān)時開關(guān)標(biāo)識顏色需要改變,另外需要體現(xiàn)出元素點擊前與點擊后的動態(tài)變化與立體效果。本例最終設(shè)計呈現(xiàn)效果描述如下圖所示:
開關(guān)按鈕實現(xiàn)效果展示
要實現(xiàn)如上圖所示的開關(guān)按鈕效果,需要針對元素改變鼠標(biāo)點擊前后的CSS樣式,因為只使用CSS實現(xiàn),我們選擇本身具有點擊屬性的INPUT元素。因此還需要考慮對INPUT元素外觀進(jìn)行設(shè)置,其設(shè)置也主要是依托于CSS選擇器及相關(guān)屬性的設(shè)置。
CSS選擇器及屬性設(shè)置
另一方面本例中出現(xiàn)的開關(guān)標(biāo)志,主要使用第三方字體庫提供的圖標(biāo)實現(xiàn),因此需要對font相關(guān)屬性及CSS外部link方法有所學(xué)習(xí)掌握。本例所使用字體如下所示:
字體圖標(biāo)
在明確基本思路之后,我們可以使用submine進(jìn)行代碼編寫,主要編寫步驟如下:
1、鏈接字體樣式
本例使用如上圖所示提供的on圖標(biāo),即Font Awesome圖標(biāo)字體庫和CSS框架,因此需要外部鏈接或者下載相應(yīng)CSS文件,這里我們選擇外部鏈接,通過使用CSS提供的link,實現(xiàn)代碼如下:
字體鏈接
鏈接完成之后我們在設(shè)置字體時可直接使用FontAwesome字體,其中on圖標(biāo)對應(yīng)的編碼為f011。
2、定義頁面內(nèi)容
本例頁面內(nèi)容主要使用input元素checkbox屬性進(jìn)行按鈕設(shè)置。因此頁面內(nèi)容部分定義如下所示:
頁面主體部分
3、定義checkbox樣式
在完成頁面元素添加之后就需要對頁面元素進(jìn)行CSS樣式的設(shè)置,本例通過元素加type屬性作為選擇器,選擇指定元素并進(jìn)行樣式設(shè)置。代碼如下:
checkbox屬性設(shè)置
checkbox屬性設(shè)置描述如上圖所示,設(shè)置效果如下:
checkbox屬性效果
4、input添加checked、after等樣式
為進(jìn)一步實現(xiàn)點擊效果切換及圖標(biāo)按鈕的效果,需要對check狀態(tài)及after偽元素進(jìn)行CSS樣式的設(shè)置。其中after為元素主要用于在上圖中添加on開關(guān)圖標(biāo)。實現(xiàn)代碼描述如下:
after偽元素選擇器及樣式設(shè)置
after偽元素選擇器及樣式設(shè)置如上圖所示,主要完成content內(nèi)容即on圖標(biāo)設(shè)置,字體選擇、字體顏色及字體大小設(shè)置,設(shè)置完成預(yù)覽效果如下:
after為元素設(shè)置效果
要實現(xiàn)點擊效果就需要在點擊之后對input元素樣式進(jìn)行設(shè)置,因此我們使用checked作為選擇器對該狀態(tài)下input樣式進(jìn)行設(shè)置。設(shè)置代碼如下所示:
checked狀態(tài)CSS設(shè)置
checked狀態(tài)CSS設(shè)置如上圖所示,我們只對box-shadow陰影進(jìn)行設(shè)置,通過陰影變化實現(xiàn)按鈕動態(tài)效果。
5、點擊之后on圖標(biāo)顏色變化
點擊之后on圖標(biāo)顏色變化主要通過對input[type="checkbox"]:checked,進(jìn)一步使用after偽元素定義字體顏色實現(xiàn)。實現(xiàn)代碼如下所示:
on圖標(biāo)(字體)顏色改變
通過使用該選擇器,會在input點擊之后,on字體顏色變?yōu)榧t色。以上給出了input按鈕效果實現(xiàn)的基本思路與部分核心實現(xiàn)代碼。如需完整案例代碼請關(guān)注并私信作者。
本頭條號長期關(guān)注編程資訊分享;編程課程、素材、代碼分享及編程培訓(xùn)。如果您對以上方面有興趣或代碼錯誤、建議與意見,可在評論區(qū)回復(fù)。更多程序設(shè)計相關(guān)教程及實例分享,期待大家關(guān)注與閱讀!
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。