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