整合營(yíng)銷(xiāo)服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢(xún)熱線:

          如何使用div模仿input效果,快來(lái)學(xué)習(xí)一下吧


          在很多web或者app頁(yè)面中,我們可以看到各種各樣的輸入框,從外觀上看它們可以直觀的看做是input元素,但是實(shí)際上并非如此。我們可以通過(guò)別的標(biāo)簽去模擬input標(biāo)簽的效果,今天我們就來(lái)看看如何使用div標(biāo)簽?zāi)Minput標(biāo)簽的效果。

          div+css

          頁(yè)面效果

          這里我們用ofo的主頁(yè)面作為例子,在點(diǎn)擊下面數(shù)字的時(shí)候,數(shù)字的內(nèi)容會(huì)出現(xiàn)在輸入框內(nèi),這個(gè)輸入框就是用div模擬實(shí)現(xiàn)的。

          當(dāng)然頁(yè)面內(nèi)容是靜態(tài)的,只是一個(gè)簡(jiǎn)單的html,我們來(lái)看下實(shí)現(xiàn)后的效果。如果感興趣的可以直接去github上去看看,源碼地址:

          https://github.com/zhouxiongking/article-pages/tree/master/articles/divToInput

          實(shí)現(xiàn)效果

          顯示框

          這里我們定義一個(gè)顯示內(nèi)容的div來(lái)模擬input,其css樣式如下。

          css樣式

          :before

          我們使用:before偽元素來(lái)裝載輸入的內(nèi)容,在:before元素中使用content屬性來(lái)動(dòng)態(tài)的元素的屬性值。

          使用:before偽元素

          閃爍動(dòng)作

          在input標(biāo)簽中,如果input元素獲取焦點(diǎn)后,在input元素內(nèi)會(huì)有光標(biāo)在閃爍,這個(gè)效果我們可以通過(guò):after偽元素來(lái)實(shí)現(xiàn)。

          我們會(huì)用到動(dòng)畫(huà)animation的知識(shí),首先定義一個(gè)動(dòng)畫(huà)效果,利用opacity屬性來(lái)控制顯示與不顯示,從而造成閃爍效果。

          定義閃爍動(dòng)作

          然后在:after偽元素中使用。

          :after偽元素

          Javascript控制輸入

          在設(shè)置好div效果后,需要在點(diǎn)擊下面的數(shù)字時(shí),將值顯示在div中,這就需要用到Javascript去控制。

          首先獲取頁(yè)面上所有存在動(dòng)作的元素。

          獲取元素

          然后給數(shù)字和刪除元素分別添加對(duì)應(yīng)的事件。

          元素綁定事件

          綁定事件后,在點(diǎn)擊數(shù)字時(shí)會(huì)將值動(dòng)態(tài)的顯示在div中,在刪除時(shí)也會(huì)相應(yīng)刪掉最后一個(gè)添加的元素值。

          頁(yè)面設(shè)計(jì)

          對(duì)于整個(gè)頁(yè)面的設(shè)計(jì),采用了header,div和footer的布局。

          header和div的html部分代碼如下。

          header與div

          相應(yīng)的footer部分代碼如下,其主要采用的是table布局,相對(duì)簡(jiǎn)單實(shí)用。

          footer部分

          至此,整個(gè)頁(yè)面的實(shí)現(xiàn)就講解完畢了,中間有很多的css樣式部分我并沒(méi)有放出來(lái),感興趣的可以自行去github上clone下來(lái)看看。

          總結(jié)

          今天這篇文章主要以ofo主頁(yè)面實(shí)現(xiàn)來(lái)講解了一下如何使用div來(lái)模擬input的效果,你有收獲嗎

          例最終效果如下:

          一、設(shè)置整個(gè)網(wǎng)頁(yè)的背景色

          圖1

          圖2

          二、創(chuàng)建一個(gè)盒子,讓其水平居中,距離上邊200像素。

          圖3

          圖4

          三、把盒子設(shè)置四個(gè)角為圓角,圓10個(gè)像素。

          圖5

          圖6

          四、在大盒子里做一個(gè)ding盒子,設(shè)置它上面兩個(gè)角是圓角,下面兩個(gè)角是直角。

          圖7

          圖8

          五、ding盒子里輸入幾個(gè)字,讓這幾個(gè)字在盒子里水平居中,垂直居中,關(guān)于盒子內(nèi)居中問(wèn)題可參看我寫(xiě)的文【203】。

          圖9

          圖10

          六、在deng盒子里面再做三個(gè)小盒子,取名為ref,注意如果這三個(gè)盒子不用浮動(dòng),會(huì)有什么效果,這個(gè)你可以試試看。

          圖11

          圖12

          七、往ref盒子里面添加信息,發(fā)下圖,這里順便學(xué)習(xí)兩個(gè)標(biāo)簽,一個(gè)是input,一個(gè)是button。

          圖13

          圖14

          八、去掉背景色,然后用盒子內(nèi)居中的方法,讓這些元素居中。

          圖15

          圖16

          九、通過(guò)樣式,設(shè)置按鈕的大小和字的大小,這里我特地用id來(lái)給元素上名字,不同于class,在樣式里調(diào)用的時(shí)候,一個(gè)是前面加.一個(gè)是前面加#。

          圖17

          圖18

          十、最后設(shè)置一下密碼輸入框,輸入內(nèi)容時(shí)為密碼隱藏符號(hào)。

          圖19

          圖20

          網(wǎng)頁(yè)制作過(guò)程中,布局是我們最重要的一個(gè)環(huán)節(jié)??梢哉f(shuō)布局的好壞直接影響到整個(gè)網(wǎng)頁(yè)的成敗!布局成則事半功倍;布局?jǐn)?,則事倍功半。 隨著移動(dòng)互聯(lián)的到來(lái),響應(yīng)式網(wǎng)站風(fēng)靡。這也就興起了一種新興的布局方式——彈性布局。取代我們之前“display+float+position”的布局形式,采用全新的彈性布局,會(huì)讓你的網(wǎng)站如絲般順滑! 今天,就讓我們一起來(lái)學(xué)習(xí)一下彈性布局,讓我們用5個(gè)div玩轉(zhuǎn)彈性布局吧~

          1.彈性布局簡(jiǎn)介

          彈性布局,又稱(chēng)“Flex布局”,是由W3C大哥于2009年推出的一種布局方式??梢院?jiǎn)便、完整、響應(yīng)式地實(shí)現(xiàn)各種頁(yè)面布局。而且已經(jīng)得到所有主流瀏覽器的支持,我們可以放心大膽的使用。

          >>> 了解兩個(gè)基本概念,接下來(lái)會(huì)頻繁提到:

          ① 容器: 需要添加彈性布局的父元素;

          ② 項(xiàng)目: 彈性布局容器中的每一個(gè)子元素,稱(chēng)為項(xiàng)目;

          >>> 了解兩個(gè)基本方向,這個(gè)牽扯到彈性布局的使用:

          ① 主軸: 在彈性布局中,我們會(huì)通過(guò)屬性規(guī)定水平/垂直方向?yàn)橹鬏S;

          ② 交叉軸: 與主軸垂直的另一方向,稱(chēng)為交叉軸。

          2 .彈性布局的使用

          • ① 給父容器添加display: flex/inline-flex;屬性,即可使容器內(nèi)容采用彈性布局顯示,而不遵循常規(guī)文檔流的顯示方式;
          • ② 容器添加彈性布局后,僅僅是容器內(nèi)容采用彈性布局,而容器自身在文檔流中的定位方式依然遵循常規(guī)文檔流;
          • ③ display:flex; 容器添加彈性布局后,顯示為塊級(jí)元素;
          • display:inline-flex; 容器添加彈性布局后,顯示為行級(jí)元素;
          • ④ 設(shè)為 Flex布局后,子元素的float、clear和vertical-align屬性將失效。但是position屬性,依然生效。
          • 2.1代碼實(shí)例
          <div id="div">
                      <div class="div1">1</div>
                      <div class="div2">2</div>
                      <div class="div3">3</div>
                      <div class="div4">4</div>
                  </div>
          #div{
                          width: 400px;
                          height: 400px;
                          background-color: yellow;
                          display: flex;
                          
                      }
                      #div div{
                          width: 100px;
                          height: 100px;
                          background-color: blue;
                          color: white;
                          font-size: 30px;
                          
                      }

          五個(gè)簡(jiǎn)單的div,只給父容器添加了display: flex;屬性,就可以讓容器內(nèi)部打破原有文檔流模式,展現(xiàn)為彈性布局。

          簡(jiǎn)單的了解一下彈性布局后,我們來(lái)詳解一下配合“display: flex;”使用的12大屬性。其中,12個(gè)屬性分為兩類(lèi),6個(gè)作用于父容器,6個(gè)作用于子項(xiàng)目。

          3. 作為父容器的6大屬性

          • ① flex-direction屬性決定主軸的方向(即項(xiàng)目的排列方向)。row(默認(rèn)值): 主軸為水平方向,起點(diǎn)在左端;row-reverse: 主軸在水平方向,起點(diǎn)在右端 ;column:主軸為垂直方向,起點(diǎn)在上沿。column-reverse:主軸為垂直方向,起點(diǎn)在下沿。

          • ② flex-wrap屬性定義,如果一條軸線排不下,如何換行。

          nowrap(默認(rèn)):不換行。當(dāng)容器寬度不夠時(shí),每個(gè)項(xiàng)目會(huì)被擠壓寬度;

          wrap: 換行,并且第一行在容器最上方;

          wrap-reverse: 換行,并且第一行在容器最下方。

          • ③ flex-flow 是flex-direction和flex-wrap的縮寫(xiě)形式,默認(rèn)值為:flex-flow: row wrap; 不做過(guò)多解釋
          • ④ justify-content屬性定義了項(xiàng)目在主軸上的對(duì)齊方式。

          >>> 此屬性與主軸方向息息相關(guān)。

          主軸方向?yàn)椋簉ow-起點(diǎn)在左邊,row-reverse-起點(diǎn)在右邊, column-起點(diǎn)在上邊,column-reverse-起點(diǎn)在下邊

          flex-start(默認(rèn)值): 項(xiàng)目位于主軸起點(diǎn)。

          flex-end:項(xiàng)目位于主軸終點(diǎn)。

          center: 居中

          space-between:兩端對(duì)齊,項(xiàng)目之間的間隔都相等。(開(kāi)頭和最后的項(xiàng)目,與父容器邊緣沒(méi)有間隔)

          space-around:每個(gè)項(xiàng)目?jī)蓚?cè)的間隔相等。所以,項(xiàng)目之間的間隔比項(xiàng)目與邊框的間隔大一倍。(開(kāi)頭和最后的項(xiàng)目,與父容器邊緣有一定的間隔)



          • ⑤ align-items屬性定義項(xiàng)目在交叉軸上如何對(duì)齊。

          flex-start:交叉軸的起點(diǎn)對(duì)齊。

          flex-end:交叉軸的終點(diǎn)對(duì)齊。

          center:交叉軸的中點(diǎn)對(duì)齊。

          baseline: 項(xiàng)目的第一行文字的基線對(duì)齊。(文字的行高、字體大小會(huì)影響每行的基線)

          stretch(默認(rèn)值):如果項(xiàng)目未設(shè)置高度或設(shè)為auto,將占滿整個(gè)容器的高度。





          • ⑥ align-content屬性定義了多根軸線的對(duì)齊方式。如果項(xiàng)目只有一根軸線,該屬性不起作用。

          (當(dāng)項(xiàng)目換為多行時(shí),可使用align-content取代align-items)

          flex-start:與交叉軸的起點(diǎn)對(duì)齊。

          flex-end:與交叉軸的終點(diǎn)對(duì)齊。

          center:與交叉軸的中點(diǎn)對(duì)齊。

          space-between:與交叉軸兩端對(duì)齊,軸線之間的間隔平均分布。

          space-around:每根軸線兩側(cè)的間隔都相等。所以,軸線之間的間隔比軸線與邊框的間隔大一倍。

          stretch(默認(rèn)值):軸線占滿整個(gè)交叉軸。







          4. 移動(dòng)設(shè)備端作用于子項(xiàng)目的6大屬性


          • ① order屬性定義項(xiàng)目的排列順序。數(shù)值越小,排列越靠前,默認(rèn)為0。

          • ② flex-grow屬性定義項(xiàng)目的放大比例,默認(rèn)為0,即如果存在剩余空間,也不放大。

          • ③ flex-shrink屬性定義了項(xiàng)目的縮小比例,默認(rèn)為1,即如果空間不足,該項(xiàng)目將縮小。




          • ④ flex-basis定義項(xiàng)目占據(jù)的主軸空間。(如果主軸為水平,則設(shè)置這個(gè)屬性,相當(dāng)于設(shè)置項(xiàng)目的寬度。 原width將會(huì)失效。)


          • ⑤ flex屬性是flex-grow, flex-shrink 和 flex-basis的簡(jiǎn)寫(xiě),默認(rèn)值為0 1 auto。后兩個(gè)屬性可選。

          此屬性有兩個(gè)快捷設(shè)置:auto=(1 1 auto)/none=(0 0 auto)


          • ⑥ align-self:定義單個(gè)項(xiàng)目自身在交叉軸上的排列方式,可以覆蓋掉容器上的align-items屬性。

          屬性值:與align-items相同,默認(rèn)值為auto,表示繼承父容器的align-items屬性值。


          好了,相信到這里,所有同學(xué)都能夠理解flex彈性布局了吧~~學(xué)習(xí)一個(gè)新知識(shí),字不如表,表不如圖。希望這5個(gè)div的圖解,能夠讓所有同學(xué)深刻的理解Flex彈性布局~接下來(lái),讓我們愉快的拋棄Float、拋棄Position,一起擁抱Flex吧!!

          最后,所有的源碼附上,需要的同學(xué)自行測(cè)試哦~

          <!DOCTYPE html>
          <html>    
              <head>        
                  <meta charset="UTF-8">        
                  <title></title>        
                  <style type="text/css">            
                      #div{ width: 500px;
                          height: 400px;
                          background-color: yellow;
                          display: flex;
                          /*flex-direction: column-reverse;*/                /*flex-wrap: wrap;*/                /*justify-content: space-around;*/                /*align-items: stretch;*/                /*align-content: stretch;*/
                      }
                      #div div{width: 100px;   
                          height: 100px;    
                          background-color: blue;
                          color: white;  
                          font-size: 30px;
                          /*flex-shrink: 0;*/
                      } 
                      #div .div1{   /*font-size: 48px;*/
                          /*order: 1;*/ 
                          /*flex-grow: 1;*/ 
                          /*flex-shrink: 0;*/ 
                          /*background-color: red;*/  
                      }
                      #div .div3{  /*flex-grow: 2;*/
                          background-color: green;
                          /*flex-basis: 200px;*/ 
                          align-self: flex-end;
                      }        
                  </style>    
              </head>        
              <body> 
                  <div id="div">
                    <div class="div1">1</div>
                      <div class="div2">2</div> 
                      <div class="div3">3</div>
                      <div class="div4">4</div>
                  </div>    
              </body>
          </html>

          --如需轉(zhuǎn)發(fā),請(qǐng)注明原文網(wǎng)站,整理不易


          主站蜘蛛池模板: 国产伦精品一区二区三区免.费| 亚洲国产一区视频| 无码国产精品一区二区免费I6| 国产一区二区三区免费| 国产在线精品一区二区不卡麻豆| 免费无码VA一区二区三区| 91精品乱码一区二区三区| 欧洲精品一区二区三区在线观看| 国产麻豆精品一区二区三区| 国产美女露脸口爆吞精一区二区| 夜夜添无码试看一区二区三区 | 中文字幕AV无码一区二区三区| 成人国产一区二区三区| 日本一区二区三区久久| tom影院亚洲国产一区二区 | 精品一区二区三区视频| 久久蜜桃精品一区二区三区| AV无码精品一区二区三区| 日本一区免费电影| 97精品国产福利一区二区三区| 久久中文字幕一区二区| 无码精品尤物一区二区三区| 3D动漫精品啪啪一区二区下载| 精品日韩一区二区| 国产波霸爆乳一区二区| 麻豆一区二区99久久久久| 日韩一区二区a片免费观看| 精品国产一区二区三区av片| 国产一区二区高清在线播放| 精品爆乳一区二区三区无码av| 国产在线观看一区二区三区| 麻豆一区二区免费播放网站| 无码人妻精品一区二区三区99性| 国产精品女同一区二区久久| 亚洲视频一区二区三区四区| 亚洲一区二区女搞男| 韩国福利视频一区二区| 亚洲一区二区三区免费在线观看| 国产成人高清精品一区二区三区| 久久久久人妻一区精品性色av| 日韩AV在线不卡一区二区三区|