Js自定义多选框效果的实例代码


Posted in Javascript onJuly 05, 2017

前端入坑纪 27

工作中的一个多选效果,感觉不算太难,就上传来分享下。

Js自定义多选框效果的实例代码

以上图文,纯属测试,如有雷同,请勿当真

HTML 结构

<div id="selexWps" class="seletProds clear">
    <div>
      <span>积分<em>5000</em></span>
      ![](wrap/img/pic.png)
      <p>请选择</p>
    </div>
    <div>
      <span>积分<em>5000</em></span>
      ![](wrap/img/pic.png)
      <p>请选择</p>
    </div>
    <div>
      <span>积分<em>6000</em></span>
      ![](wrap/img/pic.png)
      <p>请选择</p>
    </div>
    <div>
      <span>积分<em>7000</em></span>
      ![](wrap/img/pic.png)
      <p>请选择</p>
    </div>
    <div>
      <span>积分<em>8000</em></span>
      ![](wrap/img/pic.png)
      <p>请选择</p>
    </div>
    <div>
      <span>积分<em>9000</em></span>
      ![](wrap/img/pic.png)
      <p>请选择</p>
    </div>
  </div>
  <div class="endBtnsWrp clear">
    <a class="endBtn" href="javascript:;" rel="external nofollow" rel="external nofollow" >积分:<em id="talval">0</em></a>
    <a class="endBtn" href="javascript:;" rel="external nofollow" rel="external nofollow" >结算</a>
  </div>

这真不晓得什么要特意说明,真要有的话,那底部的结算条,它是fixed 布局,固定在屏幕底部。

CSS 结构

body {
      padding: 0;
      margin: 0;
      background-color: #fff;
      padding-bottom: 60px;
    }

    p {
      padding: 0;
      margin: 0;
    }

    ul,
    li {
      padding: 0;
      margin: 0;
      list-style: none;
    }

    a {
      text-decoration: none;
      color: #525252;
    }

    .fl {
      float: left;
    }

    .fr {
      float: right;
    }

    .clear::after {
      display: block;
      content: "";
      clear: both;
    }

    .seletProds>div {
      float: left;
      position: relative;
      text-align: center;
      border: 2px solid #d8d8d8;
      box-sizing: border-box;
      width: 30%;
      margin: 1.666%;
    }

    .seletProds p {
      font-size: 14px;
      line-height: 37px;
      border-top: 2px solid #d8d8d8;
      text-align: center;
      background-color: #fff;
      color: #525252;
    }

    .seletProds>div img {
      width: 80%;
    }

    .seletProds>div span {
      position: absolute;
      top: 0;
      right: 0;
      background: rgba(255, 92, 92, 0.79);
      padding: 0 3px;
      color: #fff;
      height: 17px;
      font-size: 12px;
    }

    .seletProds>div span em,
    .endBtnsWrp a em {
      font-style: normal;
    }

    .seletProds>div.on p {
      color: #fff;
      background-image: linear-gradient(-90deg, #53a0fe 0%, #5063ed 100%);
    }

    .endBtnsWrp {
      position: fixed;
      bottom: 0;
      left: 0;
      width: 100%;
    }

    .endBtn {
      display: block;
      float: left;
      width: 50%;
      line-height: 50px;
      font-size: 17px;
      color: #fff;
      background: #4a4a4a;
      text-align: center;
    }

    .endBtnsWrp a:first-child {
      background: #646464;
      width: 60%;
    }

    .endBtnsWrp a:last-child {
      background-color: #fcc647;
      width: 40%;
    }

css3的属性用了不少,因为这个项目的出发点就是手机端的。比如渐变背景,伪元素等。每个商品是通过浮动布局来实现的。

JS 结构

var odivs = document.getElementById('selexWps').getElementsByTagName("div");
    var emTal = 0; // 这是总的积分数,初始为0
    for (var i = 0; i < odivs.length; i++) {
       // 先给每个点击的项目添加个自定义属性,以便区别点击前和点击后,刚开始是off
      odivs[i].setAttribute("clickv", "off");
      odivs[i].onclick = function() {
        // 点击时,先获取里面的积分文字,转成数字类型
        var themVal = Number(this.getElementsByTagName("em")[0].innerText);
        // 这里判断未点击的点击后,要处理的操作
        if (this.getAttribute("clickv") == "off") {
          emTal += themVal;
          this.className = "on";
          this.getElementsByTagName("p")[0].innerText = "已选择";
          this.setAttribute("clickv", "on");
        } else {
         // 这里自然是已点击过,再点击的操作
          emTal -= themVal;
          this.className = "";
          this.getElementsByTagName("p")[0].innerText = "请选择";
          this.setAttribute("clickv", "off");
        }
         // 这里自然是把点完后,变更的最终积分数添加到页面的结算里
        document.getElementById("talval").innerText = emTal;
        //  console.log(emTal)
      }
    }

js 备注已添加,相对来说还算详细,有兴趣的小伙伴可以尝试实验下。加油吧!!!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
AJAX 网页保留浏览器前进后退等功能
Feb 12 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
Apr 18 Javascript
Jquery带搜索框的下拉菜单
May 06 Javascript
javascript实现的网站访问量统计代码
Dec 20 Javascript
浅谈JS之tagNaem和nodeName
Sep 13 Javascript
React中ES5与ES6写法的区别总结
Apr 21 Javascript
node.js操作mongodb简单示例分享
May 25 Javascript
js表单序列化判断空值的实例
Sep 22 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
Dec 20 Javascript
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
May 15 Javascript
Vue 动态组件与 v-once 指令的实现
Feb 12 Javascript
如何封装Vue Element的table表格组件
Feb 06 Vue.js
使用 jQuery 实现表单验证功能
Jul 05 #jQuery
详解angularJS自定义指令间的相互交互
Jul 05 #Javascript
利用canvas实现的加载动画效果实例代码
Jul 05 #Javascript
AngularJS使用ocLazyLoad实现js延迟加载
Jul 05 #Javascript
vue一步步实现alert功能
Jul 05 #Javascript
详解vue.js移动端导航navigationbar的封装
Jul 05 #Javascript
JS实现移动端按首字母检索城市列表附源码下载
Jul 05 #Javascript
You might like
php弹出对话框实现重定向代码
2014/01/23 PHP
Javascript学习笔记二 之 变量
2010/12/15 Javascript
nodejs实用示例 缩址还原
2010/12/28 NodeJs
分享几个超级震憾的图片特效
2012/01/08 Javascript
js将iframe中控件的值传到主页面控件中的实现方法
2013/03/11 Javascript
js自动生成对象的属性示例代码
2013/10/28 Javascript
js实现的类似于asp数据字典的数据类型代码实例
2014/09/03 Javascript
javascript 数组操作详解
2015/01/29 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
原创jQuery弹出层插件分享
2015/04/02 Javascript
javascript中 try catch用法
2015/08/16 Javascript
jQuery实现图片轮播特效代码分享
2015/09/15 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
前端面试题及答案整理(二)
2016/08/26 Javascript
JS键盘版计算器的制作方法
2016/12/03 Javascript
通过sails和阿里大于实现短信验证
2017/01/04 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
JS中的JSON对象的定义和取值实现代码
2018/05/09 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
如何在VUE中使用vue-awesome-swiper
2021/01/04 Vue.js
Django中redis的使用方法(包括安装、配置、启动)
2018/02/21 Python
python3解析库lxml的安装与基本使用
2018/06/27 Python
使用CodeMirror实现Python3在线编辑器的示例代码
2019/01/14 Python
python多进程间通信代码实例
2019/09/30 Python
python计算Content-MD5并获取文件的Content-MD5值方式
2020/04/03 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
2021/03/03 Python
Hotels.com英国:全球领先的酒店住宿提供商
2019/01/24 全球购物
澳大利亚实惠时尚女装商店:Katies
2019/06/16 全球购物
顶岗实习接收函
2014/01/09 职场文书
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
廉洁自律演讲稿
2014/05/22 职场文书
文秘专业应届生求职信
2014/05/26 职场文书
幼儿园2016年圣诞活动总结
2016/03/31 职场文书
Oracle笔记
2021/04/05 Oracle