原生实现一个toast组件;ul下li点击确定是哪个
2017-09-25 19:07
369 查看
1.简单的一个toast组件
首先贴上代码:
核心思路是一个包裹层wrap,一个内部toast,两者的position都设为fixed,通过设定z-index以及wrap的top,right,bottom,left使得包裹层全屏覆盖,然后给toast设定动画,动画改变top。js代码的思路是运行函数就修改
4000
样式,让wrap可见,toast的className修改,立即具有动画效果。关闭函数则是还原样式。
2.ul下li点击确定是哪个;
如果是无序列表ul,可以使用e.target获取到具体哪个li被点击,获取到Node节点,通过innerText获取信息,但是无法得知在ul中的顺序。
如果是有序列表ol,可以使用e.target获取li节点,然后有value属性获取到节点顺序。
另外,网上提出一个childNodes属性,
ul.childNodes.indexOf(e,target);返回li的顺序 ,在ie下可行,在chrome等浏览器childNodes返回的集合不仅有li节点,还包括空格,可以先去除空格再寻找顺序。
首先贴上代码:
<!DOCTYPE html> <html> <head> <title></title> <style type="text/css"> .toast-wrap{ position: fixed; top:0px; bottom: 0px; left:0px; right:0px; background-color:#363636; opacity:0.5; display: none; z-index: 10; } .toast-block{ position: fixed; width: 30%; height:150px; left:35%; right:35%; /*这里left相对于span左侧,right是相对于右侧*/ border-radius: 4px; background-color: #fff; font-size:25px; text-align: center; padding: 4px 2px 4px 2px; z-index: 999; animation: move 1s ease; -webkit-animation: move 1s ease; animation-fill-mode: forwards; } @-webkit-keyframes move { from{top: 100%} to{top: 40%} } </style> </head> <body> <p>我是其他内容</p> <div class="toast-wrap"> <span id="toast-block" onclick="closeToast()"></span> </div> <button onclick="toast('I am a toast!')">open</button> </body> <script type="text/javascript"> function $(name){ return document.querySelector(name); } var wrap = $('.toast-wrap'),block=$('#toast-block'); function toast(word){ wrap.style.display = 'block'; block.className = "toast-block"; block.innerHTML = word; } function closeToast(){ wrap.style.display = 'none'; block.className = ""; } </script> </html>
核心思路是一个包裹层wrap,一个内部toast,两者的position都设为fixed,通过设定z-index以及wrap的top,right,bottom,left使得包裹层全屏覆盖,然后给toast设定动画,动画改变top。js代码的思路是运行函数就修改
4000
样式,让wrap可见,toast的className修改,立即具有动画效果。关闭函数则是还原样式。
2.ul下li点击确定是哪个;
<style type="text/css"> li{ list-style-type:none; /*消除li前面的点*/ width:100px; height: 20px; background-color: yellow; margin-top:2px; } </style> </head> <body> <ul id="myul"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul> </body> <script type="text/javascript"> var ul = document.querySelector('#myul'); //var li = document.querySelector('li'); //以className或在tagName只会选择到第一个节点、 //getElementByTagName(),getElementByClassName()则会返回集合 document.onclick = function(e){ //console.log(e.target); if(e.target.parentNode==ul){ console.log(e.target.innerText); alert(e.target.innerText); //innerHTML 是返回或者添加HTML代码段 innerHTML = '<li>6</li>'; //innerText 返回或者添加内容 } } </script>
如果是无序列表ul,可以使用e.target获取到具体哪个li被点击,获取到Node节点,通过innerText获取信息,但是无法得知在ul中的顺序。
如果是有序列表ol,可以使用e.target获取li节点,然后有value属性获取到节点顺序。
另外,网上提出一个childNodes属性,
ul.childNodes.indexOf(e,target);返回li的顺序 ,在ie下可行,在chrome等浏览器childNodes返回的集合不仅有li节点,还包括空格,可以先去除空格再寻找顺序。
相关文章推荐
- JavaScript实现点击按钮弹出输入框,点确定后添加li组件到ul组件里
- JavaScript实现点击按钮弹出输入框,点确定后添加li组件到ul组件里
- <ul>中的<li>我点击一个<li>后其它的<li>全变背景色,求JS和CSS代码 <ul>中的<li>我点击一个<li>后其它的<li>全变背景色 要图中效果,求JS和CSS代码 (搜搜问问)
- jquery实现ul列表中点击li选择radio
- Android中使用toast组件做一个点击按钮打招呼的程序
- 1、点击一个ul的五个li元素,分别弹出他们的序号,用正常和闭包的方法
- 原生js点击ul下边li显示其索引值的”n“种方法
- js实现点击哪个li哪个li背景为红色
- aspx.cs 文件中,想实现弹出一个警告窗口后,点击“确定”后,重定向到一个 list.aspx 页,如何做啊?
- JS遍历ul下的li点击弹出li的索引的实现方法
- 原生js实现的ul li 二级联动
- 实现点击在组件下方弹出单选框。并且选中哪个哪个后方显示对勾。文字变色。同时展示Popupwindow实现和遮罩效果
- 原生js点击ul下边li显示其索引值的”n“种方法
- jquery实现ul列表中点击radio后面的文本选中radio,点击整个li选中radio
- iOS多个UILabel添加同一个单击手势,如何确定用户点击的是哪个UILabel (swift3.0)
- 给一个ul列表中点击到的li赋予样式
- [Android] 快速实现一个可切换Tab标签页的组件
- gridView 实现 点击一个图片 进行3D翻转 然后变成另外一个图片
- Jquery和JS获取ul中li标签的实现方法