首页 > 编程语言 > 详细

javascript+css实例_商品排序

时间:2020-05-08 13:05:22      阅读:42      评论:0      收藏:0      [点我收藏+]

javascript+css实例---商品排序

功能

  • 商品以表格中形式展示
  • 多功能排序,价格、销量、名称。排序方式在不点击时会隐藏(位置、展示、动画搞了好久

实现

  • 排序方式隐藏,定位采用绝对定位(absolute),溢出时隐藏(overflow:hidden),最最重要一点动画效果将其y轴转化成-100%
  • 排序实现:获取表格中行集合,每种排序方式实际上是对不同行两者第几个属性比较来排序。排序方式,接近于冒泡排序,交换方式使用(insertBefore())插入交换

代码

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>搜索栏提示</title>
    <link type="text/css" href="style.css" rel="stylesheet">
</head>
<body>
<ul id="main">
    <li>分类方式
        <ul class="drop">
            <div>
                <li onclick="sort(0)">名称</li>
                <li onclick="sort(1)">价格</li>
                <li onclick="sort(2)">销量</li>
            </div>
        </ul>
    </li>
</ul>
<br>
<br>
<table class="myTable" id="myTable">
    <tr>
        <th>名称</th>
        <th>价格</th>
        <th>销量</th>
    </tr>
    <tr>
        <td>大话设计模式</td>
        <td>45</td>
        <td>12</td>
    </tr>
    <tr>
        <td>计算机组成原理</td>
        <td>46</td>
        <td>10</td>
    </tr>
    <tr>
        <td>数据库系统概述</td>
        <td>42</td>
        <td>20</td>
    </tr>
</table>
</body>
<script type="text/javascript" src="show.js"></script>
</html>

CSS

#main {
    list-style: none;/*取消原有属性*/
    display: inline-block;
    border:solid black 1px;
}
#main li {
    display: inline-block;
    cursor: pointer;
    z-index: 5;
    min-width: 120px;
}
.drop {
    overflow: hidden;/*配合动画效果溢出将其隐藏*/
    list-style: none;
    position: absolute;
    left:0%;
    width: 40%;
}

/*动画效果,还不太懂*/
.drop div {
    transform: translate(0, -100%);
    transition: all 0.5s 0.1s;
}
.drop li {
    border-bottom:solid black 1px;
}

#main li:nth-child(1):hover ul div {/*相当于hover事件*/
    transform: translate(0, 0);
}

/*单线表格*/
.myTable{
    border-collapse: collapse;
}
.myTable  td, th {
    border: 1px solid black;
}

JS

function sort(x){
    var table=document.getElementById("myTable");
    var test=true,isSwitch=false,tr,i=0,a,b;
    /*冒泡排序的变种,js的swap比较特殊嘛*/
    while(test){
        test=false;/*如果逆序,就继续进行交换*/
        isSwitch=false;
        tr=table.getElementsByTagName("TR");
        for(i=1;i<tr.length-1;i++){
            a=tr[i].getElementsByTagName("TD")[x].innerHTML.toLowerCase();
            b=tr[i+1].getElementsByTagName("TD")[x].innerHTML.toLowerCase();
            if(a>b){
                test=true;
                isSwitch=true;
                break;
            }
        }
        if(isSwitch){
            tr[i].parentNode.insertBefore(tr[i+1],tr[i]);/*把tr[i+1]插入到tr[i]的前面,相当于交换了位置*/
        }
    }
}

javascript+css实例_商品排序

原文:https://www.cnblogs.com/508335848vf/p/12849290.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!