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 相关文章推荐
学习YUI.Ext第七日-View&amp;JSONView Part Two-一个画室网站的案例
Mar 10 Javascript
IE6图片加载的一个BUG解决方法
Jul 13 Javascript
只需一行代码,轻松实现一个在线编辑器
Nov 12 Javascript
Javascript单元测试框架QUnitjs详细介绍
May 08 Javascript
基于javascript的COOkie的操作实现只能点一次
Dec 26 Javascript
javascript制作幻灯片(360度全景图片)
Jul 28 Javascript
javascript作用域、作用域链(菜鸟必看)
Jun 16 Javascript
jQuery 调用WebService 实例讲解
Jun 28 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
Jan 03 Javascript
JS实现移动端判断上拉和下滑功能
Aug 07 Javascript
JavaScript Image对象实现原理实例解析
Aug 26 Javascript
JavaScript获取URL参数的方法分享
Apr 07 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
一个多文件上传的例子(原创)
2006/10/09 PHP
php实现改变图片直接打开为下载的方法
2015/04/14 PHP
为百度UE编辑器上传图片添加水印功能
2015/04/16 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
jQuery在iframe中无法弹出对话框的解决方法
2014/01/12 Javascript
js导航栏单击事件背景变换示例代码
2014/01/13 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
js 操作符汇总
2014/11/08 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
JS动态创建元素的两种方法
2016/04/20 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
js实现图片加载淡入淡出效果
2017/04/07 Javascript
关于Promise 异步编程的实例讲解
2017/09/01 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
2018/02/08 Javascript
微信小程序实现预览图片功能
2020/10/22 Javascript
JS/jQuery实现简单的开关灯效果【案例】
2019/02/19 jQuery
vue-cli webpack配置文件分析
2019/05/20 Javascript
最简单的vue消息提示全局组件的方法
2019/06/16 Javascript
Vue 同步异步存值取值实现案例
2020/08/05 Javascript
Python计算三角函数之asin()方法的使用
2015/05/15 Python
Python中的random.uniform()函数教程与实例解析
2019/03/02 Python
用Python中的turtle模块画图两只小羊方法
2019/04/09 Python
python读取文件指定行内容实例讲解
2020/03/02 Python
python实现一个猜拳游戏
2020/04/05 Python
Python ADF 单位根检验 如何查看结果的实现
2020/06/03 Python
通过案例解析python鸭子类型相关原理
2020/10/10 Python
伦敦高达60%折扣的钻石珠宝商:Purely Diamonds
2018/06/24 全球购物
业绩考核岗位职责
2014/02/01 职场文书
护士长竞聘书
2014/03/31 职场文书
干部鉴定材料
2014/05/18 职场文书
音乐节策划方案
2014/06/09 职场文书
个人先进事迹材料
2014/12/29 职场文书
故意杀人案辩护词
2015/05/21 职场文书
javascript的var与let,const之间的区别详解
2022/02/18 Javascript