欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

CSS 實現(xiàn)側(cè)滑顯示留言面板的網(wǎng)頁組件功能

  發(fā)布時間:2020-02-21 15:54:09   作者:佚名   我要評論
這篇文章主要介紹了CSS 實現(xiàn)側(cè)滑顯示留言面板的網(wǎng)頁組件功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

大家好,不知道你們是否和我一樣存在這樣的困惑呢,雖然css入門容易,但是其內(nèi)容太多,好多屬性看了似是而非,覺得自己看懂了,到自己用的時候又很犯難了,看到漂亮的效果還是無從下手,這主要還是自己對新屬性實踐太少了,不能進行靈活應用,CSS總讓一些人找不到感覺。其實學好CSS真的沒有太多捷徑,和JS編程一樣,要重視對待,要多看和多練,因為現(xiàn)在的CSS不再是以前的CSS啦。

比如這兩本書《 CSS 權(quán)威指南第四版》,1000多頁,買了好幾個月我到現(xiàn)在還沒看完,文字實在太枯燥了,看完了忘,忘了繼續(xù)看,實在看不下去,不知道大家有沒有同樣的感受呢?

好了,廢話不多說,今天我們要做的一個案例就是做一個常見的例子:在不少網(wǎng)站右側(cè)都有一個固定浮動的留言圖標,我們點擊這個圖標,就會側(cè)滑顯示留言內(nèi)容面板。你也許會說這個不簡單嗎,使用JQ就能輕松實現(xiàn),但是我想說的,為了網(wǎng)站的性能,能用CSS實現(xiàn)的盡量不要用JS,因為現(xiàn)在CSS已足夠強大。

今天這個例子,我們將使用純CSS實現(xiàn)這個效果,這里我們將用到” CSS checkbox hack“的技術(shù),效果如下圖所示:

一、創(chuàng)建 HTML 結(jié)構(gòu)

基于上面的效果圖,我們要創(chuàng)建三個元素,一個 checkbox 元素以及對應的 label 標記,和一個表單面板元素。

這里用到了一個 CSS 特性值得大家關(guān)注下:<label> 標簽的 for 屬性用于指定與哪個表單元素進行關(guān)聯(lián),擴大表單元素的點擊區(qū)域,我們點擊 label 元素標記,其對應的表單元素將會被聚焦選中。

這個特性是我們實現(xiàn)這個案例的技巧之一,再結(jié)合 CSS checkbox 的偽類選擇器進行留言面板的顯示與隱藏,這樣我們就可以擺脫 JS 來實現(xiàn)這個案例。

基于以上思路 ,我們開始動手吧,首先我們先放置 checkbox,和其對應的 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>

完成后的效果圖如下:

二、定義基礎(chǔ)的樣式

現(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;
}

三、 定義表單元素相關(guān)樣式

1、由于 checkbox 這個元素在案例中無需顯示,我們只是用其的偽類特性結(jié)合 label 控制留言面板的顯示與隱藏,因此我們需要將其移出可視區(qū)域,記住這里不能用隱藏屬性(display:none)。示例代碼如下:

[type="checkbox"] {
  position: absolute;
  left: -9999px;
}

2、接下來,我們需要添加這些CSS操作:

  • 使用 fix 屬性將 checkbox 對應的 label 標簽元素固定在右側(cè)的中央。
  • 垂直先顯示”FEEDBACK“文本。
  • 隱藏表單面板,我們這里將其往右移動其寬度的 100% 的距離,并垂直居中。

對應的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、這里需要強調(diào)的是 feedback-label 樣式,在其垂直變換時,我們先逆時針進行了旋轉(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() 線性漸變,實現(xiàn)了一個漂亮的顏色漸變背景。還有一個 CSS3 語法需要關(guān)注下:hue-rotate,色調(diào)旋轉(zhuǎn)濾鏡,方便我們改變當前的顏色。

四、使用CSS選擇器,實現(xiàn)表單面板的切換和隱藏

我們通過點擊 checkbox 對應的 label 標簽進行切換和顯示留言面板,這里我們用到了 :checked 偽類,以及 ~(后續(xù)同胞選擇器)和 +(緊鄰同胞選擇器),輔助元素的選擇進行樣式變換,示例代碼如下:

[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;
}

這里有幾個樣式規(guī)則我們需要聊一下:

  • translate(50%, calc((var(--form-width) + 100%) * -1)); 這個樣式是不是有些復雜,其實也不難,就是多加了一個表單面板的寬度,由于旋轉(zhuǎn)后,y軸變成了水平軸,向左移動相當Y軸往上移動,因此是負值,需要乘-1。
  • 第二個選擇器,我們之所以加個選中后的 outline 輪廓屬性,主要是為了方便那些習慣鍵盤操作的用戶,當其使用 Tab 鍵選擇 feedback label元素時,然后再使用 Space 空格鍵就能很方便的打開留言面板進行切換。
  • 第三個選擇器,我們使用 transform: translate(0, -50%); 將 X 軸更改成0,恢復成最開始的位置,這樣我們的留言面板內(nèi)容就能顯示出來。

五、處理響應式問題

最后,特別重點提示下我們做頁面要考慮頁面響應式適配的問題,這里我們需要針對手機設(shè)備做一些樣式的調(diào)整,比如更改表單面板的寬度由原來的 500px 調(diào)整到 320px,以及初始字體的大小,調(diào)整成16px。

最終添加的響應式代碼如下:

/*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));
  }
}

六、小節(jié)

好了,到這里,我們的案例就全部完成了,你可以欣賞下自己完成的杰作啦,實現(xiàn)起來是不是很簡單呢,最后我還是建議大家還是親自動手實踐一遍,這樣才能加深對本案例用到的CSS屬性的理解。

最終完成的效果,大家可以點擊以下網(wǎng)址進行在線體驗:

https://www.qianduandaren.com/demo/feedback/

總結(jié)

以上就是CSS 實現(xiàn)側(cè)滑顯示留言面板的網(wǎng)頁組件功能的詳細內(nèi)容,更多關(guān)于css側(cè)滑面板的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • ai怎么使用CSS屬性面板?

    ai怎么使用CSS屬性面板?ai中想要設(shè)置CSS屬性面板,該怎么設(shè)置呢?下面我們就來看看那詳細的教程,很簡單,需要的朋友可以參考下
    2018-11-07
  • Dreamweaver中CSS面板該怎么設(shè)置?

    Dreamweaver中CSS面板該怎么設(shè)置?Dreamweaver中新建的網(wǎng)頁需要使用CSS面板設(shè)置擺弄狂,字體,背景顏色等等各種參數(shù),該怎么設(shè)置呢?下面我們就來看看CSS面板的使用方法
    2016-03-03
  • 純css3制作網(wǎng)站后臺管理面板

    本文是介紹一款以css3為主的后臺管理面板,幾乎為純代碼實現(xiàn),顯示效果良好,整體界面華麗大氣。是一款非常優(yōu)秀的模板源碼。建議采用支持css3的火狐或谷歌等瀏覽器預覽本實
    2014-12-30

最新評論