整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          HTML radio頁面控件獲取checked值

          用場景:

          今天ERP頁面上有個功能的小改動,主要是業務人員提出來,需要把原來的CheckBox(即原來的復選框)功能

          改為用單選框 ,主要原因是希望,當業務人員沒有點擊“是”或“否”時,提示她要選擇。

          因此,這里需要作一些判斷:

          1.如果客人沒有點選時,提示信息,并return;

          2.如果客人選中了,則獲取值,并進行后端操作。


          在開始顯示UI時,我們作如下操作:

          從上圖,我們可以看到,設置了相同的Name,后面的JS,我們將用了獲取這些控件的值。


          接著,當業務人員操作時,執行如下JS動作:

          從上圖,我們可以看到,如果radio的checked值是undefined,證明沒有進行任何動作,這時,我們發出警告,并return;


          最后,我們通過后端程序,獲取radio的值IsAddTask,用于判斷是否執行相應的操作

          記得點贊哦,謝謝。

          adio、checkbox和switch應該是一個比較常用的html標簽,尤其是在中后臺ERP系統里面更為常見。不過瀏覽器自帶的樣式不怎么好看,而且不同瀏覽器效果也不一樣。出于美化和統一視覺效果的需求,自定義樣式就被提出來了。

          實現思路

          純css實現的主要手段是利用label標簽的模擬功能。label的for屬性可以關聯一個具體的input元素,即使這個input本身不可被用戶可見,有個與它對應的label后,用戶可以直接通過和label標簽交互來替代原生的input——而這給我們的樣式模擬留下了空間。簡而言之就是:

          隱藏原生input,樣式定義的過程留給label (那為什么不直接改變checkbox的樣式?因為checkbox作為瀏覽器默認組件,樣式更改上并沒有label那么方便,很多屬性對checkbox都是不起作用的,比如background,而label在樣式上基本和div一樣'任人宰割')

          而在選擇事件上,由于css的“相鄰選擇符(E+F)”的存在,讓我們可以直接利用html的默認checkbox,免去了js模擬選擇的麻煩。

          準備知識

          DEMO的部分CSS3屬性只寫了webkit前綴,所以建議用webkit內核的瀏覽器查看本頁案例,當然只要你給樣式補上對應的瀏覽器前綴,就可以實現更多樣式匹配

          HTML代碼:

           <!-- input的id必須有,這個是label進行元素匹配所必需的 -->
           <!-- 可以看到每個input的id和label的“for”屬性對應同一字符串 -->
          <input type="checkbox" id="checkbox01" />
          <label for="checkbox01"></label>
          
          <input type="checkbox" id="checkbox02" />
          <label for="checkbox02"></label>
          
          <input type="checkbox" id="checkbox03" />
          <label for="checkbox03"></label>
          
          <input type="checkbox" id="checkbox04" />
          <label for="checkbox04"></label>
          

          HTML構建完成,接下來是對應的css:

          /* 隱藏所有checkbox */
          input[type='checkbox'] {
           display: none;
          }
          /* 對label進行模擬.背景圖片隨便拼湊的,不要吐槽品味*/
          /* transition效果是做個背景切換效果,這里單純演示而已,實際上這個過渡不加更自然*/
          label {
           display: inline-block;
           width: 60px;
           height: 60px;
           position: relative;
           background: url(//www.chitanda.me/images/blank.png);
           background-position: 0 0px;
           -webkit-transition: background 0.5s linear;
          }
          /* 利用相鄰選擇符和checkbox`:checked`的狀態偽類來模擬默認選中效果(就是點擊后那個勾號的效果) */
          /*如果這段代碼注釋,點擊后將沒有任何反饋給用戶*/
          /*因為label本身是沒有點擊后被選中的狀態的,checkbox被隱藏后,這個狀態只能手動模擬*/
          input[type='checkbox']:checked+label {
           background-position: 0 -60px;
          }
          

          上面代碼看起來好像也可以了。不過仔細想想,貌似缺了點什么:選項對應的提示文字

          對css不了解的新人可能這時候第一反應就是在label后面用p標簽或者span標簽來添加文字。不過這種方式都不怎么優雅。個人建議用css的::before和::after偽元素(::before和:before是一個東西。不過為了把“偽元素”和“偽類”區分出來,W3C建議的寫法是偽元素用::而偽類用:)

          /* 偽元素的生效很簡單,定義`content`就好,其余的屬性和普通div一樣 */
          label::after {
           content: attr(data-name);
           /*利用attr可以減少css代碼量,data-name寫在html部分的label屬性里*/
           display: inline-block;
           position: relative;
           width: 120px;
           height: 60px;
           left: 100%;
           vertical-align: middle;
           margin: 10px;
          }
          

          當然既然可以用::after模擬label的文字,那也就可以用::before模擬label的checkbox樣式,這里就不做解析了。

          這里提一下偽類和偽元素的區分:

          1)偽類:存在的意義是為了通過選擇器找到那些不存在于DOM樹中的信息以及不能被常規CSS選擇器獲取到的信息。 偽類由一個冒號:開頭,冒號后面是偽類的名稱和包含在圓括號中的可選參數。

          常用的偽類:

          :active 向被激活的元素添加樣式。 
          :focus 向擁有鍵盤輸入焦點的元素添加樣式。 
          :hover 當鼠標懸浮在元素上方時,向元素添加樣式。 
          :link 向未被訪問的鏈接添加樣式。 
          :visited 向已被訪問的鏈接添加樣式。 
          :first-child 向元素的第一個子元素添加樣式。 
          :checked 向選中的控件元素添加樣式
          

          2)偽元素:偽元素在DOM樹中創建了一些抽象元素,這些抽象元素是不存在于文檔語言里的(可以理解為html源碼);

          注意: css3為了區分偽類和偽元素,規定偽類前面有一個冒號,偽元素前面有兩個冒號

          常用偽元素:

          關于偽元素的講解,可以參考CSS偽類與偽元素總是傻傻分不清,這份總結夠面試用了

          ::before 為作用元素的第一個子節點插入dom中
          ::after 為作用元素的最后一個子節點插入dom中
          
          • 同:都是通過選擇器為元素添加樣式
          • 異:偽元素會創建一個元素,但不是真正的Html元素,偽類相當于為一個元素創建一個class樣式

          實例

          自定義radio

          html代碼:

          <input type="radio" id="radio">
          <label for="radio"></label>
          

          css代碼:

          input{
           display:none;
          }
          label {
           display: inline-block;
           width: 30px;
           height: 30px;
           border: 1px solid #333;
           border-radius: 50%;
           position: relative;
          }
          label::after {
           -webkit-transition: all .5s ease;
           -moz-transition: all .5s ease;
           -o-transition: all .5s ease;
           -ms-transition: all .5s ease;
           transition: all .5s ease;
           cursor: pointer;
           position: absolute;
           width: 16px;
           height: 16px;
           border-radius: 50%;
           top: 50%;
           left: 50%;
           margin-top:-8px;
           margin-left:-8px;
           z-index: 1;
           content: '';
           border:1px solid #333;
          }
          input:checked+label::after{
           background:red;
          }
          

          實現效果:

          點擊前和點擊后:

          自定義checkbox

          漂亮的checkbox長這樣的,看著就很可愛

          我們可以不追求那么完美的樣式,可以實現下面簡單好看的樣式就可以

          html代碼:

          <input type="checkbox" id="checkbox">
          <label for="checkbox"></label>
          

          css代碼:

          input{
           display:none;
          }
          label {
           display: inline-block;
           width: 30px;
           height: 30px;
           border: 1px solid #333;
           position: relative;
          }
          label::after {
           -webkit-transition: opacity .5s ease;
           -moz-transition: opacity .5s ease;
           -o-transition: opacity .5s ease;
           -ms-transition: opacity .5s ease;
           transition: opacity .5s ease;
           cursor: pointer;
           position: absolute;
           content: '';
           opacity: 0;
          }
          input:checked+label::after{
           border: 2px solid #d73d32;
           border-top: none;
           border-right: none;
           -webkit-transform: rotate(-45deg);
           -ms-transform: rotate(-45deg);
           transform: rotate(-45deg);
           width:20px;
           height:10px;
           top:50%;
           margin-top:-8px;
           left:50%;
           margin-left:-10px;
           opacity: 1.0;
          }
          

          實現效果:

          點擊前和點擊后:

          自定義switch

          繼續分享一個iOS風格的switch開關按鈕,樣子也非常常見,如圖:

          主要是使用了<input ?type="checkbox">來模擬實現,具體的HTML:

          html 代碼:

          <label><input class="mui-switch" type="checkbox"> 默認未選中</label>
          
          <label><input class="mui-switch" type="checkbox" checked> 默認選中</label>
          
          <label><input class="mui-switch mui-switch-animbg" type="checkbox"> 默認未選中,簡單的背景過渡效果,加mui-switch-animbg類即可</label>
          
          <label><input class="mui-switch mui-switch-animbg" type="checkbox" checked> 默認選中</label>
          
          <label><input class="mui-switch mui-switch-anim" type="checkbox"> 默認未選中,過渡效果,加 mui-switch-anim
          類即可</label>
          
          <label><input class="mui-switch mui-switch-anim" type="checkbox" checked> 默認選中</label>
          

          在實際的使用中后來又增加了兩個過渡效果,分別加?mui-switch-animbg和mui-switch-anim?類即可,具體效果查看下面的demo頁面。

          CSS代碼(SCSS導出的,排版有些奇怪):

          css 代碼:

          剩下部分

          這里給出具體的css,方便大家復制本地實現

          <style>
           .mui-switch {
           width: 52px;
           height: 31px;
           position: relative;
           border: 1px solid #dfdfdf;
           background-color: #fdfdfd;
           box-shadow: #dfdfdf 0 0 0 0 inset;
           border-radius: 20px;
           border-top-left-radius: 20px;
           border-top-right-radius: 20px;
           border-bottom-left-radius: 20px;
           border-bottom-right-radius: 20px;
           background-clip: content-box;
           display: inline-block;
           -webkit-appearance: none;
           user-select: none;
           outline: none;
           }
           .mui-switch:before {
           content: '';
           width: 29px;
           height: 29px;
           position: absolute;
           top: 0px;
           left: 0;
           border-radius: 20px;
           border-top-left-radius: 20px;
           border-top-right-radius: 20px;
           border-bottom-left-radius: 20px;
           border-bottom-right-radius: 20px;
           background-color: #fff;
           box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
           }
           .mui-switch:checked {
           border-color: #64bd63;
           box-shadow: #64bd63 0 0 0 16px inset;
           background-color: #64bd63;
           }
           .mui-switch:checked:before {
           left: 21px;
           }
           .mui-switch.mui-switch-animbg {
           transition: background-color ease 0.4s;
           }
           .mui-switch.mui-switch-animbg:before {
           transition: left 0.3s;
           }
           .mui-switch.mui-switch-animbg:checked {
           box-shadow: #dfdfdf 0 0 0 0 inset;
           background-color: #64bd63;
           transition: border-color 0.4s, background-color ease 0.4s;
           }
           .mui-switch.mui-switch-animbg:checked:before {
           transition: left 0.3s;
           }
           .mui-switch.mui-switch-anim {
           transition: border cubic-bezier(0, 0, 0, 1) 0.4s, box-shadow cubic-bezier(0, 0, 0, 1) 0.4s;
           }
           .mui-switch.mui-switch-anim:before {
           transition: left 0.3s;
           }
           .mui-switch.mui-switch-anim:checked {
           box-shadow: #64bd63 0 0 0 16px inset;
           background-color: #64bd63;
           transition: border ease 0.4s, box-shadow ease 0.4s, background-color ease 1.2s;
           }
           .mui-switch.mui-switch-anim:checked:before {
           transition: left 0.3s;
           }
           /*# sourceMappingURL=mui-switch.css.map */
          </style>
          

          如果你喜歡scss,那么代碼更加簡潔

          @mixin borderRadius($radius:20px) {
           border-radius: $radius;
           border-top-left-radius: $radius;
           border-top-right-radius: $radius;
           border-bottom-left-radius: $radius;
           border-bottom-right-radius: $radius;
           }
           $duration: .4s;
           $checkedColor: #64bd63;
           .mui-switch {
           width: 52px;
           height: 31px;
           position: relative;
           border: 1px solid #dfdfdf;
           background-color: #fdfdfd;
           box-shadow: #dfdfdf 0 0 0 0 inset;
           @include borderRadius();
           background-clip: content-box;
           display: inline-block;
           -webkit-appearance: none;
           user-select: none;
           outline: none;
           &:before {
           content: '';
           width: 29px;
           height: 29px;
           position: absolute;
           top: 0px;
           left: 0;
           @include borderRadius();
           background-color: #fff;
           box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
           }
           &:checked {
           border-color: $checkedColor;
           box-shadow: $checkedColor 0 0 0 16px inset;
           background-color: $checkedColor;
           &:before {
           left: 21px;
           }
           }
           &.mui-switch-animbg {
           transition: background-color ease $duration;
           &:before {
           transition: left 0.3s;
           }
           &:checked {
           box-shadow: #dfdfdf 0 0 0 0 inset;
           background-color: $checkedColor;
           transition: border-color $duration, background-color ease $duration;
           &:before {
           transition: left 0.3s;
           }
           }
           }
           &.mui-switch-anim {
           transition: border cubic-bezier(0, 0, 0, 1) $duration, box-shadow cubic-bezier(0, 0, 0, 1) $duration;
           &:before {
           transition: left 0.3s;
           }
           &:checked {
           box-shadow: $checkedColor 0 0 0 16px inset;
           background-color: $checkedColor;
           transition: border ease $duration, box-shadow ease $duration, background-color ease $duration*3;
           &:before {
           transition: left 0.3s;
           }
           }
           }
           }
          

          鏈接文章

          https://www.html.cn/archives/9274

          https://segmentfault.com/a/1190000003711140

          • :HTML 基本結構
          • <html> 標記放在 HTML 文件的開頭,是一個形式上的標記;
          • <body> 標記稱為主體標記,網頁所要顯示的內容都放在這個標記內,它是 HTML 文件的重要所在;
          • <head> 標記稱為頭標記,起的作用是放置關于此 HTML 文件的信息,如提供索引、定義 CSS 樣式等;
          • <title> 標記稱為標題標記,起的作用是設定網頁標題;


          • 2:開發中常用的標簽
          • <b>文字以粗體方式顯示</b>
          • <i>文字以斜體方式顯示</i>
          • <u>文字以加下劃線方式顯示</u>
          • <s>文字以加下刪除方式顯示</s>
          • <big>文字以放大方式顯示</big>
          • <small>文字以縮小方式顯示</small>
          • <strong>文字以加強強調方式顯示</strong>
          • <em>文字以強調方式顯示</em>
          • <address>地址標簽:xxxxxx@一只快樂的小碼農.com</address>
          • <code>代碼塊</code>
          • align 屬性控制段落的水平位置
          • bgcolor 屬性設置背景顏色
          • 無序列表 ul
          • 有序列表 ol
          • 2.1 段落標簽<p>
          • 2.2 換行標簽<br>
          • 2.3 標題標簽<h1>~<h6>
          • 2.4 文字居中標簽<center>
          • 2.5 文字段落縮進標簽<blockquote>
          • <img src="">網頁中嵌入圖片(height+weigth屬性調整圖片大小)
          • <form action="" method="">表單提交
          • <align="">對齊方式-left+right+center...
          • <div></div>-設置塊級元素
          • type="radio"-單選框
          • type="checkbox"-復選框
          • <select><option></option><select>-下拉菜單

          基本符號代碼轉化


          • 3:用 HTML 建立超鏈接
          • 3-1框架之間的鏈接
          • 3-1-1://frameset框架標簽中用rows屬性將窗口分為上中下三部分
          • <frameset rows="30%,10%,*">
          • <frame>
          • <frame>
          • <frame>
          • </frameset>
          • 3-1-2://用src屬性在框架中插入網頁
          • </head>
          • <frameset cols="30%,*">
          • <frame src="a.html">
          • <frameset rows="50%,*">
          • <frame src="b.html">
          • <frame src="c.html">
          • </frameset>
          • </frameset>
          • </html>
          • 3-1-3//框架之間建立鏈接
          • </head>
          • <frameset cols="30%,*">
          • <frame src="a.html">
          • <frame name="main">

          • </frameset>
          • </html>
          • 4:下一節我們講css和js

          主站蜘蛛池模板: 国产中文字幕一区| 日亚毛片免费乱码不卡一区 | 女女同性一区二区三区四区| 亚洲片一区二区三区| 人妻久久久一区二区三区 | 视频一区二区精品的福利| 怡红院一区二区三区| 99久久精品国产高清一区二区| 色久综合网精品一区二区| 亚洲AV无码一区二区三区人| 久久久91精品国产一区二区| 秋霞电影网一区二区三区| 在线播放国产一区二区三区 | 亚洲福利视频一区二区三区| 中文字幕在线视频一区| 日本精品少妇一区二区三区| 久久久久人妻精品一区二区三区 | 加勒比精品久久一区二区三区| 日韩免费无码一区二区三区| 日本免费一区尤物| 在线视频一区二区三区三区不卡| 日韩电影一区二区三区| 美女免费视频一区二区| 久久一区不卡中文字幕| 国产成人久久精品麻豆一区| 久久精品一区二区三区资源网| 亚洲av片一区二区三区| 亚洲av无码一区二区三区天堂| 国产伦理一区二区| 东京热无码av一区二区| 国产精品成人一区二区| 亚洲AV一区二区三区四区| 亚洲AV日韩AV一区二区三曲| 日本在线一区二区| 无码国产精品一区二区免费16 | 国产福利电影一区二区三区久久久久成人精品综合 | 亚洲国产精品一区第二页 | 精品国产一区二区三区久| 亚洲一区AV无码少妇电影☆| 国产精品毛片一区二区三区| 无码人妻久久一区二区三区 |