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 相关文章推荐
jquery表格内容筛选实现思路及代码
Apr 16 Javascript
JavaScript获取文本框内选中文本的方法
Feb 20 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
May 18 Javascript
JavaScript实现LI列表数据绑定的方法
Aug 04 Javascript
js中获取时间new Date()的全面介绍
Jun 20 Javascript
JS动态添加选项案例分析
Oct 17 Javascript
bootstrap multiselect 多选功能实现方法
Jun 05 Javascript
简述Angular 5 快速入门
Nov 04 Javascript
JSON数据中存在单个转义字符“\”的处理方法
Jul 11 Javascript
小程序兼容安卓和IOS数据处理问题及坑
Sep 18 Javascript
Jquery异步上传文件代码实例
Nov 13 jQuery
vue 实现基础组件的自动化全局注册
Dec 25 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文件下载类
2006/12/06 PHP
比较全的PHP 会话(session 时间设定)使用入门代码
2008/06/05 PHP
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
linux使用crontab实现PHP执行计划定时任务
2014/05/10 PHP
php调用KyotoTycoon简单实例
2015/04/02 PHP
php实现比较全的数据库操作类
2015/06/18 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
javascript 函数使用说明
2010/04/07 Javascript
通过一段代码简单说js中的this的使用
2013/07/23 Javascript
有关jquery与DOM节点操作方法和属性记录
2016/04/15 Javascript
JS实现“隐藏与显示”功能(多种方法)
2016/11/24 Javascript
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
2018/01/15 Javascript
webpack将js打包后的map文件详解
2018/02/22 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
2018/07/12 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
npm 语义版本控制详解
2019/09/10 Javascript
javascript中innerHTML 获取或替换html内容的实现代码
2020/03/17 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
2020/03/23 Javascript
Python比较2个时间大小的实现方法
2018/04/10 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
python 生成任意形状的凸包图代码
2020/04/16 Python
在vscode中启动conda虚拟环境的思路详解
2020/12/25 Python
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
Blancsom美国/加拿大:服装和生活用品供应商
2018/07/27 全球购物
什么是聚集索引和非聚集索引
2012/01/17 面试题
雪山饭庄的创业计划书范文
2014/01/18 职场文书
优秀民警事迹材料
2014/01/29 职场文书
股权收购意向书
2014/04/01 职场文书
人力资源管理专业自荐信
2014/06/24 职场文书
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
白酒代理协议书范本
2014/10/26 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书
二年级学生期末评语
2014/12/26 职场文书
毛主席纪念堂观后感
2015/06/17 职场文书