果大家有關(guān)注知更鳥的博主們都知道,前陣子知更鳥大神分享了一個(gè)WordPress添加3D旋轉(zhuǎn)標(biāo)簽云的JS文件和具體的添加辦法,所以今天趁著有空我也把這個(gè)3D旋轉(zhuǎn)標(biāo)簽云添加到Three主題中測(cè)試,現(xiàn)分享具體的操作步驟:
1、將下面的3d.js腳本下載放到Three主題js目錄中,即Three\js。
下載地址
2、刪除Three主題 functions.php 模板文件的彩色標(biāo)簽云代碼,即刪除473至485行。
3、打開Three主題 functions.php 模板文件,在大約260行,添加:
wp_enqueue_script( '3d', get_template_directory_uri() . '/js/3d.js' );
或者直接將下面代碼加到主題header.php的34行上面。
<script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/js/3d.js"></script>
4、登錄WordPress后臺(tái)》外觀》小工具》添加“標(biāo)簽云”小工具到指定側(cè)邊欄(如首頁側(cè)邊欄),然后鼠標(biāo)對(duì)著側(cè)邊欄的這個(gè)標(biāo)簽云小工具右鍵》查看元素(360瀏覽器,其他應(yīng)該差不多)》在瀏覽器最下方就可以看到這個(gè)小工具的名稱為:tag_cloud-4。
5、將下面的樣式添加到主題style.css的最后即可(PS:如果第3步得到的小工具名稱不是4,而是其他數(shù)字,則修改CSS代碼中相應(yīng)的數(shù)字即可):
/** 3D旋轉(zhuǎn)標(biāo)簽云 **/
#tag_cloud-4 {
position:relative;
height:340px;
margin: 10px auto 0;
}
#tag_cloud-4 a {
position:absolute;
color: #fff;
text-align: center;
text-overflow: ellipsis;
whitewhite-space: nowrap;
top:0px;
left:0px;
padding: 3px 5px;
border: none;
}
#tag_cloud-4 a:hover {
background: #d02f53;
display: block;
}
#tag_cloud-4 a:nth-child(n) {
background: #666;
border-radius: 3px;
display: inline-block;
line-height: 18px;
margin: 0 10px 15px 0;
}
#tag_cloud-4 a:nth-child(2n) {
background: #d1a601;
}
#tag_cloud-4 a:nth-child(3n) {
background: #286c4a;
}
#tag_cloud-4 a:nth-child(5n) {
background: #518ab2;
}
#tag_cloud-4 a:nth-child(4n) {
background: #c91d13;
}
6、將3d.js文件19行的tag_cloud-2也改為tag_cloud-4即可(PS:如果第3步得到的小工具名稱不是4,而是其他數(shù)字,則修改CSS代碼中相應(yīng)的數(shù)字即可)。
至此,Three主題已經(jīng)成功添加了3D旋轉(zhuǎn)標(biāo)簽云。不過這個(gè)只能添加到首頁側(cè)邊欄或日志頁側(cè)邊欄,如果想讓這個(gè)標(biāo)簽云同時(shí)出現(xiàn)在首頁和日志頁側(cè)邊欄,我們還需要添加一個(gè)公共側(cè)邊欄,步驟如下:
1、打開Three主題 functions.php 模板文件,在48行后面添加以下代碼:
register_sidebar( array(
'name' => '公共側(cè)邊欄',
'id' => 'sidebar-6',
'description' => '整站小工具',
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => '<div class="clear"></div></aside>',
'before_title' => '<h3 class="widget-title"><span class="cat">',
'after_title' => '</span></h3>',
) );
2、打開Three主題 sidebar.php 模板文件,在13行后面添加以下代碼:
<?php dynamic_sidebar( 'sidebar-6' ); ?>
3、將剛才在后臺(tái)》外觀》小工具添加的“標(biāo)簽云”拖到“公共側(cè)邊欄”即可實(shí)現(xiàn)整站顯示3D旋轉(zhuǎn)標(biāo)簽云。
家好,不知道你們是否和我一樣存在這樣的困惑呢,雖然css入門容易,但是其內(nèi)容太多,好多屬性看了似是而非,覺得自己看懂了,到自己用的時(shí)候又很犯難了,看到漂亮的效果還是無從下手,這主要還是自己對(duì)新屬性實(shí)踐太少了,不能進(jìn)行靈活應(yīng)用,CSS總讓一些人找不到感覺。其實(shí)學(xué)好CSS真的沒有太多捷徑,和JS編程一樣,要重視對(duì)待,要多看和多練,因?yàn)楝F(xiàn)在的CSS不再是以前的CSS啦。
比如這兩本書《 CSS 權(quán)威指南第四版》,1000多頁,買了好幾個(gè)月我到現(xiàn)在還沒看完,文字實(shí)在太枯燥了,看完了忘,忘了繼續(xù)看,實(shí)在看不下去,不知道大家有沒有同樣的感受呢?
好了,廢話不多說,今天我們要做的一個(gè)案例就是做一個(gè)常見的例子:在不少網(wǎng)站右側(cè)都有一個(gè)固定浮動(dòng)的留言圖標(biāo),我們點(diǎn)擊這個(gè)圖標(biāo),就會(huì)側(cè)滑顯示留言內(nèi)容面板。你也許會(huì)說這個(gè)不簡單嗎,使用JQ就能輕松實(shí)現(xiàn),但是我想說的,為了網(wǎng)站的性能,能用CSS實(shí)現(xiàn)的盡量不要用JS,因?yàn)楝F(xiàn)在CSS已足夠強(qiáng)大。
今天這個(gè)例子,我們將使用純CSS實(shí)現(xiàn)這個(gè)效果,這里我們將用到” CSS checkbox hack“的技術(shù),效果如下圖所示:
基于上面的效果圖,我們要?jiǎng)?chuàng)建三個(gè)元素,一個(gè) checkbox 元素以及對(duì)應(yīng)的 label 標(biāo)記,和一個(gè)表單面板元素。
這里用到了一個(gè) CSS 特性值得大家關(guān)注下:<label> 標(biāo)簽的 for 屬性用于指定與哪個(gè)表單元素進(jìn)行關(guān)聯(lián),擴(kuò)大表單元素的點(diǎn)擊區(qū)域,我們點(diǎn)擊 label 元素標(biāo)記,其對(duì)應(yīng)的表單元素將會(huì)被聚焦選中。
這個(gè)特性是我們實(shí)現(xiàn)這個(gè)案例的技巧之一,再結(jié)合 CSS checkbox 的偽類選擇器進(jìn)行留言面板的顯示與隱藏,這樣我們就可以擺脫 JS 來實(shí)現(xiàn)這個(gè)案例。
基于以上思路 ,我們開始動(dòng)手吧,首先我們先放置 checkbox,和其對(duì)應(yīng)的 label,最后添加表單面板和相關(guān)的表單元素。
我們將通過表單的 id 屬性與表單中l(wèi)abel元素的 for 值與其關(guān)聯(lián),最終我們完成了 HTML 結(jié)構(gòu)如下段代碼所示:
<input type="checkbox" id="mycheckbox">
<label for="mycheckbox" class="feedback-label">FEEDBACK</label>
<form class="form">
<div>
<label for="fullname">Full Name</label>
<input type="text" id="fullname">
</div>
<div>
<label for="email">Email</label>
<input type="email" id="email">
</div>
<div>
<label for="comment">Comment</label>
<textarea id="comment"></textarea>
</div>
<div>
<button type="submit">Send</button>
</div>
</form>
完成后的效果圖如下:
現(xiàn)在我們開始添加一些基礎(chǔ)的CSS的式,這里我們用到了CSS自定義變量,方便我們?nèi)中薷模€有一些 reset 規(guī)則,和表單的基礎(chǔ)規(guī)則樣式,示例代碼如下:
:root {
--white: white;
--gradient: linear-gradient(-45deg, #FFA600 0%, #FF5E03 50%);
--form: #eeefef;
--border-radius: 4px;
--form-width: 500px;
--form-mob-width: 320px;
}
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
body {
font: 20px/1.5 sans-serif;
background: var(--white);
}
h1 {
font-size: 2rem;
text-align: center;
margin-top: 20vh;
}
button,
label {
cursor: pointer;
}
label {
display: block;
}
button,
input,
textarea {
font-family: inherit;
font-size: 100%;
border: none;
}
textarea {
resize: none;
}
1、由于 checkbox 這個(gè)元素在案例中無需顯示,我們只是用其的偽類特性結(jié)合 label 控制留言面板的顯示與隱藏,因此我們需要將其移出可視區(qū)域,記住這里不能用隱藏屬性(display:none)。示例代碼如下:
[type="checkbox"] {
position: absolute;
left: -9999px;
}
2、接下來,我們需要添加這些CSS操作:
對(duì)應(yīng)的CSS代碼如下:
/*CUSTOM VARIABLES HERE*/
.feedback-label,
.form {
position: fixed;
top: 50%;
right: 0;
}
.feedback-label {
transform-origin: top right;
transform: rotate(-90deg) translate(50%, -100%);
z-index: 2;
}
.form {
width: var(--form-width);
max-height: 90vh;
transform: translate(100%, -50%);
padding: 30px;
overflow: auto;
background: var(--form);
z-index: 1;
}
小提示:
1、這里需要強(qiáng)調(diào)的是 feedback-label 樣式,在其垂直變換時(shí),我們先逆時(shí)針進(jìn)行了旋轉(zhuǎn),其 x ,y 軸的方向也是隨著旋轉(zhuǎn)的,所以是translate(50%, -100%),將其垂直居中。
2、在 form 樣式里,我們使用 transform 方法,translate(100%, -50%) 將其移出頁面顯示區(qū)域
3、我們繼續(xù),大家不要著急,馬上就快完成了,我們需要將頁面弄的漂亮些,添加一些樣式,示例代碼如下:
/*CUSTOM VARIABLES HERE*/
.feedback-label,
.form input,
.form textarea,
.form button {
border-radius: var(--border-radius);
}
.feedback-label,
.form button {
background: var(--gradient);
color: var(--white);
}
.feedback-label:hover,
.form button:hover {
filter: hue-rotate(-45deg);
}
.feedback-label {
padding: 5px 10px;
border-radius: var(--border-radius) var(--border-radius) 0 0;
}
form div:not(:last-child) {
margin-bottom: 20px;
}
form div:last-child {
text-align: right;
}
.form input,
.form textarea {
padding: 0 5px;
width: 100%;
}
.form button {
padding: 10px 20px;
width: 50%;
max-width: 120px;
}
.form input {
height: 40px;
}
.form textarea {
height: 220px;
}
小提示:這里我們的背景色用到了 linear-gradient() 線性漸變,實(shí)現(xiàn)了一個(gè)漂亮的顏色漸變背景。還有一個(gè) CSS3 語法需要關(guān)注下:hue-rotate,色調(diào)旋轉(zhuǎn)濾鏡,方便我們改變當(dāng)前的顏色。
我們通過點(diǎn)擊 checkbox 對(duì)應(yīng)的 label 標(biāo)簽進(jìn)行切換和顯示留言面板,這里我們用到了 :checked 偽類,以及 ~(后續(xù)同胞選擇器)和 +(緊鄰?fù)x擇器),輔助元素的選擇進(jìn)行樣式變換,示例代碼如下:
[type="checkbox"]:checked + .feedback-label {
transform: rotate(-90deg) translate(50%, calc((var(--form-width) + 100%) * -1));
}
[type="checkbox"]:focus + .feedback-label {
outline: 2px solid rgb(77, 144, 254);
}
[type="checkbox"]:checked ~ .form {
transform: translate(0, -50%);
}
.feedback-label,
.form {
transition: all 0.35s ease-in-out;
}
這里有幾個(gè)樣式規(guī)則我們需要聊一下:
最后,特別重點(diǎn)提示下我們做頁面要考慮頁面響應(yīng)式適配的問題,這里我們需要針對(duì)手機(jī)設(shè)備做一些樣式的調(diào)整,比如更改表單面板的寬度由原來的 500px 調(diào)整到 320px,以及初始字體的大小,調(diào)整成16px。
最終添加的響應(yīng)式代碼如下:
/*CUSTOM VARIABLES HERE*/
@media screen and (max-width: 600px) {
body {
font-size: 16px;
}
.form {
padding: 15px;
width: var(--form-mob-width);
}
form div:not(:last-child) {
margin-bottom: 10px;
}
[type="checkbox"]:checked + .feedback-label {
transform: rotate(-90deg) translate(50%, calc((var(--form-mob-width) + 100%) * -1));
}
}
好了,到這里,我們的案例就全部完成了,你可以欣賞下自己完成的杰作啦,實(shí)現(xiàn)起來是不是很簡單呢,最后我還是建議大家還是親自動(dòng)手實(shí)踐一遍,這樣才能加深對(duì)本案例用到的CSS屬性的理解。
最終完成的效果,大家可以點(diǎn)擊以下網(wǎng)址進(jìn)行在線體驗(yàn):
https://www.qianduandaren.com/demo/feedback/
今天的內(nèi)容就和大家分享到這里,感謝你的閱讀,如果你喜歡我的分享,麻煩給個(gè)關(guān)注、點(diǎn)贊加轉(zhuǎn)發(fā)哦,你的支持,就是我分享的動(dòng)力,后續(xù)會(huì)持續(xù)分享 CSS 常用案例和技巧,歡迎持續(xù)關(guān)注。
基礎(chǔ)章節(jié):這30個(gè)CSS選擇器,你必須熟記(上)
基礎(chǔ)章節(jié):這30個(gè)CSS選擇器,你必須熟記(中)
基礎(chǔ)章節(jié):這30個(gè)CSS選擇器,你必須熟記(下)
使用 CSS Checkbox Hack 技術(shù)制作一個(gè)手風(fēng)琴組件
著現(xiàn)代瀏覽器對(duì)CSS3的支持愈發(fā)完善,對(duì)于實(shí)現(xiàn)各個(gè)瀏覽器兼容的元素的水平翻轉(zhuǎn)或是垂直翻轉(zhuǎn)效果也就成為了可能。相關(guān)的CSS代碼如下:
其中,就目前而言,對(duì)于基于webkit核心的瀏覽器,如Chrome以及Safari,實(shí)現(xiàn)元素的垂直翻轉(zhuǎn)或是水平翻轉(zhuǎn)也可以使用如下樣式:
--
來源:切圖網(wǎng)(qietu.com)始于2007年,專注web前端開發(fā),培訓(xùn)
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。