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 相关文章推荐
javascript 基础篇3 类,回调函数,内置对象,事件处理
Mar 14 Javascript
关于javascript中的typeof和instanceof介绍
Dec 04 Javascript
Visual Studio中js调试的方法图解
Jun 30 Javascript
用javascript关闭本窗口技巧小结
Sep 05 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
Feb 27 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
Mar 14 Javascript
jQuery的remove()方法使用详解
Aug 11 Javascript
微信小程序 自己制作小组件实例详解
Dec 22 Javascript
EsLint入门学习教程
Feb 17 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
Dec 12 Javascript
javaScript中的空值和假值
Dec 18 Javascript
微信小程序实现写入读取缓存详解
Aug 30 Javascript
使用 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中的时间显示
2007/01/18 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
2011/01/17 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
php中防止恶意刷新页面的代码小结
2012/10/31 PHP
php读取纯真ip数据库使用示例
2014/01/26 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
php自定义函数实现二维数组排序功能
2016/07/20 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
2016/08/17 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
兼容IE和FF的js脚本代码小结(比较常用)
2010/12/06 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
javascript实现拖动元素交换位置
2015/11/29 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
2016/12/22 Javascript
基于javaScript的this指向总结
2017/07/22 Javascript
Vue.js进行查询操作的实例详解
2017/08/25 Javascript
详解Node.js模板引擎Jade入门
2018/01/19 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
JS html事件冒泡和事件捕获操作示例
2019/05/01 Javascript
python 获取文件列表(或是目录例表)
2009/03/25 Python
python中使用sys模板和logging模块获取行号和函数名的方法
2014/04/15 Python
python字符串连接的N种方式总结
2014/09/17 Python
Python描述器descriptor详解
2015/02/03 Python
Flask框架web开发之零基础入门
2018/12/10 Python
python实现Flappy Bird源码
2018/12/24 Python
python如何基于redis实现ip代理池
2020/01/17 Python
PyQt5+Pycharm安装和配置图文教程详解
2020/03/24 Python
python软件都是免费的吗
2020/06/18 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
行政管理毕业生自荐信
2014/02/24 职场文书
求职信标题怎么写
2014/05/26 职场文书
环保志愿者活动方案
2014/08/14 职场文书
医药公司采购员岗位职责
2015/04/03 职场文书
2015暑期工社会实践报告
2015/07/13 职场文书
Java各种比较对象的方式的对比总结
2021/06/20 Java/Android