javascript
input 不显示边框_不需要使用JavaScript
點擊右上方紅色按鈕關注“小鄭搞碼事”,每天都能學到知識,搞懂一個問題!
謝謝你點開來閱讀,小鄭希望您閱讀完有所獲。
先解釋一下標題的歧義,之所以叫不需要使用JavaScript的意思不是讓你放棄它,更不是說有個橫空出世的腳本可以替換它。說的是前端在處理交互的時候,好多場景是可以不用JavaScript干預的。而直接借助標簽特性,CSS屬性特點,選擇器靈活應用就能很好的完成一個你所需要的交互效果。這里會用實例的方式,詳細的給大家講一些交互是如何棄JavaScript而實現的。希望大家從中有所獲。
先來復習一下幾個長的相似的選擇器。這些選擇器不是每天都會用,可能一個星期甚至幾個月才會用一次,如此,容易忽略或者易混淆它們的作用。所以借此機會來一起復習一下,因為本文講解的實例中也會用到。
如上圖所示:
1. 逗號指的是相同的CSS樣式,class值為a的對象和class值為b的對象所使用的樣式值是完全一樣的。
2. 空格指的是后代元素,定義class值為a的對象的所有后代元素中class值為b的對象的樣式值。
3. 大于號叫子選擇器,作用于第一代子元素而不是所有,與空格選擇器區分開來。
4. 加號是相鄰兄弟選擇器,只作用于后出現的相鄰元素,如上,緊接著class值為a的對象出現的class值為b的對象。
4. 破浪號定義class值為a的元素同級下所有符合class值為b的元素的樣式。
選擇器復習完了,下面我們來講解一些實例。
一、傳送帶效果實現
這種效果經常出現在焦點圖區域,點擊左右按鈕或者點擊圓點區域來切換圖片。如下圖所示:
如果你認為這種效果只能借助腳本語言JS來實現的話,那今天你也就能學會不用JS實現的方法。還記得HTML元素中,label標簽中的for屬性嗎?對,沒錯,傳送帶效果就是利用label標簽的for屬性來實現的。
【非JavaScript實現技術】for屬性規定label與哪個表單元素綁定。
舉個例子:
Male注意label里的for屬性值,和input里的id屬性值是對應的,當點擊label時,單選項input就被選中狀態。進一步我們就可以利用樣式選擇器來設置選中input的同級元素狀態,從而實現我們想要的效果。
來對照傳送帶效果的源代碼,看看具體怎么實現:
這是傳送帶效果實現的代碼,如上圖所示,實現原理就是利用設置選中input元素同級元素樣式來搞的。需要用的樣式選擇器有相鄰元素選擇器+,有同級元素選擇器~。對著上面代碼圖,下面我在具體說一下實現過程。
1. 當用戶點擊左右箭頭(labler標簽)時,對應與其for屬性相同的id屬性的input元素被選中,利用相鄰元素選擇器,設置其相鄰元素class=carousel-item的顯示。
2. 利用同級元素選擇器~。設置所有同級元素label的class=control-1的UI狀態,這樣就能實現點擊左右箭頭時,切換到對應的圖片。
二、計算復合選擇效果
從標題上不好理解,我們就直接上一張動效圖來看看(搞個GIF圖)。
就是這樣的效果,每當我們點擊選擇一個選項時,會在下面結果欄中計數加1,一個都不選擇時,就不顯示結果。
如果你認為這個效果只能借助腳本JavaScript來實現時,那么今天你又學到了一種非腳本實現方式。
還記得我之前寫過一篇文章:《使用CSS計數器動態生成且自動遞增數字》。里面我講過三個重要屬性,其中就有應用計數器屬性(counter-increment)和顯示計數(counter)。對此還不是很熟悉的同學可以翻到之前的過一下,非常好理解。
好了,回到計算復合選擇效果的實現上,其實現原理就是利用計數器功能。
【非JavaScript實現技術】計數器兩個屬性counter-increment和counter 。
如果對計數器足夠了解的話,這段代碼也是非常好理解的。利用counter來統計選中的input元素的個數。對照上面代碼具體來分析一下:
1. 首先在選擇input元素上應用計數器(counter-increment),在class=result元素上顯示計數數值。
2. 默認class=result元素不顯示,利用同級選擇器~來控制,當有選中的input元素時顯示class=result元素。
三、移入和點擊翻動效果
類似于翻牌的效果,在動作上有所不同,這里主要強調的是鼠標移入和點擊觸發時的動效,如下面這張gif圖所示:
來看一下,這個效果不用JS是如何實現的。
【非JavaScript實現技術】利用input(checkbox)選中時設置相鄰元素的樣式。
DOM結果很簡單:
Front Back如這個結構所示,實現的關鍵代碼就是在checkbox選中之后設置相鄰元素class=card的樣式值(rotate屬性)。細心的同學可能發現了,在鼠標移入時有一個小的轉動角度和邊框陰影,這個是利用label標簽hover時給class=card元素加rotateX(20deg)和box-shadow值。鼠標移入label后,點擊input選中后,使用+號選擇器設置class=card元素的rotateX值即可實現上面的效果。這個比較簡單,不深入說了,總之在不使用JS的情況下也能輕松搞定上面這個交互效果。
四、補充說明效果
這個效果大家一定非常熟悉,鼠標移入的時候展示對應文字說明的浮層,其意義大部分就是進一步說明。同樣先來看一下效果演示。
對CSS熟悉的同學應該都知道,CSS有一些函數Function,也都是比較通用的,比如:
attr()函數
calc()函數
linear-gradient()函數
radial-gradient()函數
等等。
補充說明這個效果也無需JS來實現,純CSS就能搞定。
【非JavaScript實現技術】鼠標hover時,使用attr函數獲取屬性內容到before的content中。
關鍵代碼:
data-info是放在標簽dfn上的一個自定義屬性,dfn標簽可標記那些特殊術語或短語的定義,關于該標簽需要注意的是能不用的時候盡量不要用??傊?#xff0c;關于補充說明的效果,大家清楚了純CSS是怎么實現的就行了。
五、頁卡切換效果
最后要說的是Tab切換效果,其非JS處理原理就是和上面說的傳送帶效果是一樣的,使用label標簽的for屬性來搞。
對照源代碼來講一下它的基本實現思路。
【非JavaScript實現技術】設置選中的input元素同級內容的樣式。
這里在詳細說明一下實現原理:當點擊label時,其對應的input元素被選中,然后利用同級選擇器~讓其對應的內容(class=tab_content)顯示,同時利用相鄰元素選擇器+設置其相鄰label的顯示狀態,簡單吧。
本文最后總結一下
本文開頭部分,我給大家復習了一些選擇器的用法,這里在強調三個重要的組件選擇器的用法。
>:子選擇器(ul > li)。
~:相鄰兄弟選擇器(ul + p)。
+:通用兄弟選擇器(ul ~ p)。
對照這張圖,在理解一下就一目了然了。
緊接著講了五個實例,這里在歸納一下實例中使用到的技術實現思路。
1. label的for屬性規定與哪個表單元素(id屬性)對應,點擊label時,就相當于是選擇了其對應的input元素,然后在使用CSS選擇器設置其它元素的樣式。
2. CSS中計數器的用法,主要學會三個屬性的配合使用,counter-reset(建立計數器),counter-increment(應用計數器),counter(顯示計數),搞懂可能解決很多交互問題,更多可以參考我之前的文章。
3. 注意CSS里函數的用法。如attr(), calc()等都是比較常用的。
4. 最后可以要說的一個點是偽元素的用法,尤其是after/before。
這些效果你不需要使用JavaScript。以上實例如果需要源代碼可以給我發私信哈。
總結
以上是生活随笔為你收集整理的input 不显示边框_不需要使用JavaScript的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jmeter 高并发测试报告_使用 JM
- 下一篇: python中字符串运算符及用法_pyt