龚哥哥 - 山里男儿 爱生活、做自己!
table thead表头和列固定
发表于 2020-12-13 | 浏览(18883) | 前端

Image

查看DEMO演示效果 https://gong.gg/my-test/table/index.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>table表头和列固定</title>
    <style>
        .container {
            width: 800px;
            height: 300px;
            overflow: scroll;
            border: 1px solid #ccc;
        }
        table {
            border-collapse: collapse;
        }
        table tbody tr:nth-child(odd) td {
            background-color: #f5f5f5;
        }
        table thead tr > th {
            position: sticky;
            top: 0;
            background: #ccc;
        }
        table tbody tr > td {
            border: 1px solid #eee;
            min-width: 100px;
        }
        table thead tr > th,
        table tbody tr > td {
            padding: 10px;
        }
        table thead tr > th:first-child,
        table thead tr > th:last-child {
            z-index: 1;
        }
        table thead tr > th:first-child,
        table tbody tr > td:first-child,
        table thead tr > th:last-child,
        table tbody tr > td:last-child {
            position: sticky;
            text-align: center;
        }
        table thead tr > th:first-child,
        table tbody tr > td:first-child {
            left: 0;
            -webkit-box-shadow: 1px 0px 1px #ddd;
            -moz-box-shadow: 1px 0px 1px #ddd;
            box-shadow: 1px 0px 1px #ddd;
            -webkit-box-shadow: 5px 0px 10px rgba(136, 136, 136, 0.3);
            -moz-box-shadow: 5px 0px 10px rgba(136, 136, 136, 0.3);
            box-shadow: 5px 0px 10px rgba(136, 136, 136, 0.3);
        }
        table thead tr > th:last-child,
        table tbody tr > td:last-child {
            right: 0;
            -webkit-box-shadow: 0px 0px 1px #ddd;
            -moz-box-shadow: 0px 0px 1px #ddd;
            box-shadow: 0px 0px 1px #ddd;
            -webkit-box-shadow: -5px 0px 10px rgba(136, 136, 136, 0.3);
            -moz-box-shadow: -5px 0px 10px rgba(136, 136, 136, 0.3);
            box-shadow: -5px 0px 10px rgba(136, 136, 136, 0.3);
        }
        table tbody tr > td:first-child,
        table tbody tr > td:last-child {
            background: #fff;
        }
    </style>
</head>
<body>
    <p>标题、第一列、最后一列固定、方便操作和数据对应表头</p>
    <p>下面提供了一个简单的演示、具体的实际效果可以查看 <a href="https://shopxo.net/" target="_blank">ShopXO</a> 系统中的应用</p>
    <div class="container">
        <table>
            <thead>
                <tr>
                    <th>title1</th>
                    <th>title2</th>
                    <th>title3</th>
                    <th>title4</th>
                    <th>title5</th>
                    <th>title6</th>
                    <th>title7</th>
                    <th>title8</th>
                    <th>title9</th>
                    <th>title10</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>data1-1</td>
                    <td>data1-2</td>
                    <td>data1-3</td>
                    <td>data1-4</td>
                    <td>data1-5</td>
                    <td>data1-6</td>
                    <td>data1-7</td>
                    <td>data1-8</td>
                    <td>data1-9</td>
                    <td>data1-10</td>
                </tr>
                <tr>
                    <td>data2-1</td>
                    <td>data2-2</td>
                    <td>data2-3</td>
                    <td>data2-4</td>
                    <td>data2-5</td>
                    <td>data2-6</td>
                    <td>data2-7</td>
                    <td>data2-8</td>
                    <td>data2-9</td>
                    <td>data2-10</td>
                </tr>
                <tr>
                    <td>data3-1</td>
                    <td>data3-2</td>
                    <td>data3-3</td>
                    <td>data3-4</td>
                    <td>data3-5</td>
                    <td>data3-6</td>
                    <td>data3-7</td>
                    <td>data3-8</td>
                    <td>data3-9</td>
                    <td>data3-10</td>
                </tr>
                <tr>
                    <td>data4-1</td>
                    <td>data4-2</td>
                    <td>data4-3</td>
                    <td>data4-4</td>
                    <td>data4-5</td>
                    <td>data4-6</td>
                    <td>data4-7</td>
                    <td>data4-8</td>
                    <td>data4-9</td>
                    <td>data4-10</td>
                </tr>
                <tr>
                    <td>data5-1</td>
                    <td>data5-2</td>
                    <td>data5-3</td>
                    <td>data5-4</td>
                    <td>data5-5</td>
                    <td>data5-6</td>
                    <td>data5-7</td>
                    <td>data5-8</td>
                    <td>data5-9</td>
                    <td>data5-10</td>
                </tr>
                <tr>
                    <td>data6-1</td>
                    <td>data6-2</td>
                    <td>data6-3</td>
                    <td>data6-4</td>
                    <td>data6-5</td>
                    <td>data6-6</td>
                    <td>data6-7</td>
                    <td>data6-8</td>
                    <td>data6-9</td>
                    <td>data6-10</td>
                </tr>
                <tr>
                    <td>data7-1</td>
                    <td>data7-2</td>
                    <td>data7-3</td>
                    <td>data7-4</td>
                    <td>data7-5</td>
                    <td>data7-6</td>
                    <td>data7-7</td>
                    <td>data7-8</td>
                    <td>data7-9</td>
                    <td>data7-10</td>
                </tr>
                <tr>
                    <td>data8-1</td>
                    <td>data8-2</td>
                    <td>data8-3</td>
                    <td>data8-4</td>
                    <td>data8-5</td>
                    <td>data8-6</td>
                    <td>data8-7</td>
                    <td>data8-8</td>
                    <td>data8-9</td>
                    <td>data8-10</td>
                </tr>
                <tr>
                    <td>data9-1</td>
                    <td>data9-2</td>
                    <td>data9-3</td>
                    <td>data9-4</td>
                    <td>data9-5</td>
                    <td>data9-6</td>
                    <td>data9-7</td>
                    <td>data9-8</td>
                    <td>data9-9</td>
                    <td>data9-10</td>
                </tr>
                <tr>
                    <td>data10-1</td>
                    <td>data10-2</td>
                    <td>data10-3</td>
                    <td>data10-4</td>
                    <td>data10-5</td>
                    <td>data10-6</td>
                    <td>data10-7</td>
                    <td>data10-8</td>
                    <td>data10-9</td>
                    <td>data10-10</td>
                </tr>
            </tbody>
        </table>
    </div>
</body>
</html>

阅读全文

Vue | Element 页面1000多个 input 组件输入出现卡顿解决方案
发表于 2020-6-15 | 浏览(16844) | 前端

思路:页面正常渲染文本,当点击文本的时候把当前点击的文本区域置为 input 组件, input失去blur焦点的时候 再改变为 text 文本

经测试这里做了2万个,无卡顿

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <!-- import CSS -->
  <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
  <style type="text/css">
    .input {
      width: 100px;
    }
    .input input {
      height: 54px;
      text-align: center;
      font-size: 16px;
      border: 0;
    }
    .input-c {
      border: 1px solid #eee;
      widows: 100px;
      float: left;
      margin-top: 20px;
      margin-right: 20px;
      width: 100px;
      text-align: center;
    }
    .input-text {
      width: 100px;
      height: 54px;
      line-height: 54px;
      margin: 0;
    }
    .activeInput input {
      color: #f00;
    }
  </style>
</head>
<body>
  <div id="app">
    <div v-for="(item, i) in dataList" class="input-c">
        <p v-if="item.type == 'text'" class="input-text" @click="text_fun($event,i)" data-value="item">{{item.value}}</p>
        <el-input v-if="item.type == 'input'" type="text" @blur="input_fun(i)" v-bind:class="['input',{ 'activeInput' : focusIndex === i}]" v-model="item.value" placeholder="内容"></el-input>
    </div>
  </div>
</body>
  <!-- import Vue before Element -->
  <script src="https://unpkg.com/vue/dist/vue.js"></script>
  <!-- import JavaScript -->
  <script src="https://unpkg.com/element-ui/lib/index.js"></script>
  <script>
    new Vue({
      el: '#app',
      data: function() {
        return {
          dataList:[],
        }
      },
       mounted() {
            this.add();
        },
      methods:{
          text_fun: function(e, index)
          {            
            let p = e.target.parentElement
            this.focusIndex = index;
            this.dataList[index]['type'] = 'input';
            this.$nextTick(v=>{
              p.firstElementChild.firstElementChild.focus();
            });
          },
          input_fun: function(index)
          {
            this.dataList[index]['type'] = 'text';
          },
          add:function(){
            var i = 0;
            while(i <= 10000)
            {
              this.dataList.push({
                value: i,
                type: 'text',
              });
              i++;
            }
          }
        }
    })
  </script>
</html>

阅读全文

商城系统中商品规格使用笛卡尔积运算
发表于 2019-9-22 | 浏览(26410) | 前端
/**
 * 笛卡尔积生成规格
 * @author   Devil
 * @blog     http://gong.gg/
 * @version  1.0.0
 * @datetime 2019-09-22T00:33:48+0800
 * @desc     description
 * @param    {[array]}                 arr1 [要进行笛卡尔积的二维数组]
 * @param    {[array]}                 arr2 [最终实现的笛卡尔积组合,可不写]
 */
function SpecCartesian(arr1, arr2)
{
    // 去除第一个元素
    var result = [];
    var temp_arr = arr1;
    var first = temp_arr.splice(0, 1);

    if((arr2 || null) == null)
    {
        arr2 = [];
    }

    // 判断是否是第一次进行拼接
    if(arr2.length > 0)
    {
        for(var i in arr2)
        {
            for(var k in first[0].value)
            {
                result.push(arr2[i]+','+first[0].value[k]);
            }
        }
    } else {
        for(var i in first[0].value)
        {
            result.push(first[0].value[i]);
        }
    }

    // 递归进行拼接
    if(arr1.length > 0)
    {
        result = SpecCartesian(arr1, result);
    }

    // 返回最终笛卡尔积
    return result;
}

// 自动生成规格
var spec = [
    {
        "title": "颜色",
        "value": ["黑色", "白色", "蓝色"]
    },
    {
        "title": "尺码",
        "value": ["S", "M", "L", "XL", "XXL"]
    },
    {
        "title": "长度",
        "value": ["5分裤", "7分裤", "9分裤", "长裤"]
    }
];
var data = SpecCartesian(spec);
console.log(data);

效果图

Image

阅读全文

宽屏幻灯片插件
发表于 2017-8-15 | 浏览(16251) | 前端

百度网盘下载地址:https://pan.baidu.com/s/1bqcOkcJ

效果展示

源代码平台

阅读全文

jQuery的基本选择器使用
发表于 2015-8-31 | 浏览(5370) | 前端

废话不多说,直接上代码,将所有 赋值到一个 html 文件中即可测试,// 表示注释

jquery-1.8.3.min.js 这个jQuery 下载地址,

下载地址:http://code.jquery.com/jquery-1.8.3.min.js

<!DOCTYPE html
<html>
    <head>
        <meta charset="UTF-8" />
        <title>jQuery 属性选择器</title>
        <script type="text/javascript" src="./jquery-1.8.3.min.js"></script>
        <script type="text/javascript">
            //$(document).ready(function() { 会选中全部
            $(document).ready(function() {
                //点击 button 按钮就会调用
                $('button').click(function() {
                    //$('#dd').css('color', '#F00');
                    //$('.cc').css('font-size', '38px');  //单个

                    //同时选作多个设置颜色
                    //$('#dd, .cc').css('color', '#0ff');

                    //会选择 ul 下的所有子元素,多级
                    //$('.ul span').css('color', '#F00');

                    //只会选择 ul 下的子元素,孙元素不会被选中
                    //$('.ul > span').css('color', '#F00');

                    //选作 class iia 紧的挨着的下一个元素
                    //$('.iia + li').css('color', '#F00').css('font-size', '38px');

                    //下面有两个iib 这样子的话,就会选中两个,最后一个和跟最后一个键紧挨着的一个
                    //$('.iib + li').css('color', '#F00');
                    //当选择下一个紧挨着的一个元素不存在时,则不会生效
                    //$('#iic + li').css('color', '#F00');

                    //意思class iia 下面的所有子 li 元素。逗号,则不一样的元素
                    //$('.iia ~ li,p').css('color', '#F00');

                    // 选中html标签中 属性为 id 的所有元素
                    //$('[id]').css('color', '#F00');

                    // 选中html标签中 属性为 for 的所有元素
                    //$('[for]').css('color', '#F00');

                    // 选中html标签中 属性为 asdf 的所有元素,可以应用于自定义属性
                    //$('[asdf]').css('color', '#F00');

                    //选中属性 for 等于 aaa 的所有元素
                    //$('[for="aaa"]').css('color', '#F00');

                    //选中 class 属性值为 php 的所有元素
                    //$('[class="php"]').css('color', '#F00');

                    //选中 class 不为 php 的元素。
                    //$('[class != "php"]').css('color', '#F00');

                    //选中 class 为 i 字母开头的元素
                    //$('[class ^= "i"]').css('color', '#F00');

                    //选中 class 以 b 字母结束的元素
                    //$('[class $= "b"]').css('color', '#F00');

                    //选中 class 包含 f 字母的所有元素
                    //$('[class *= "f"]').css('color', '#F00');

                    //选中 标签中必须包含 class 和 id 属性等于 iic 的元素
                    //$('[class][id = "iic"]').css('color', '#F00');

                    //选中标签中同时包含 class 属性值为 gege 和 id 属性值为 gg 的元素
                    //$('[class = "gege"][id = "gg"]').css('color', '#F00');

                    //选中 class ul,中间的空格表示下一及,后代选择器,下 class 的值为 iid 和 id 值为 bod 的元素
                    $('.ul [class = "iid"][id = "bod"]').css('color', '#F00');
                });
            });

        </script>
    </head>
    <body>
        <button>按钮 1</button>
        <button>按钮 2</button>
        <div id="dd">div dd</div>
        <div class="cc">div cc</div>
        <div class="cc">div cc2</div>

        <ul class="ul">
        <span>你是我的uuuullll</span>
            <li class="iia" id="good">苹果手机aagood 2</li>
            <li class="iib">安卓手机12bbb</li>
            <li class="iibf">软件开发2bbb</li>
            <li id="iic" class="php" asdf="fff">程序员2ccc</li>
            <p>p看看 ppp</p>
            <span>
                <li class="iid" id="bod" for="ccc">嘻嘻嘻嘻</li>
                <li id="good">哈哈哈哈哈good 2</li>
            </span>
        <li class="df">l滴滴滴滴
            <span>spspsp</span>
        </li>
        </ul>
        <label for="aaa" class="gege" id="gg">l乐乐乐乐</label>
        <li class="iid" id="bod" for="ccc">嘻嘻嘻嘻2222222</li>
    </body>
</html>

阅读全文

javascript常用的属性修改样式操作
发表于 2015-8-31 | 浏览(5421) | 前端

用JS修改CSS样式

今天修改项目的一个页面,涉及到通过js来修改css样式。自己盲目的试了好几种语法,结果都是错的。

看来还是要求助度娘啊。

突然发现在我们公司做开发,包你的js水平和css水平提高,为什么,因为公司只有一个美工,qie~~

1、添加样式

document.getElementById("id").className="div_class";

2、添加背景图片

document.getElementById("id").style.backgroundImage ="url(../images/tab_bg1.gif)";
也可以填网址

3、添加颜色

document.getElementById("id").style.color = "#fff";

4、设置字体大小

document.getElementById("id").style.fontSize = "30px";

5、设置背景色

document.getElementById("id").style.backgroundColor = "blue";

6、设置边框

document.getElementById("id").style.border = "2px solid #333333";
参数分别为宽度,样式,颜色

7、设置宽度

document.getElementById("id").style.width = "40%";

8、居中显示

document.getElementById("id").style.textAlign = "center";

阅读全文

在html中实现两个html文件交互传递数据的方法
发表于 2015-8-31 | 浏览(5870) | 前端

a.html 文件 代码如下

<html>
    <head>
    </head>
    <body>
        <input type = "text" id = "inputid">
        <input type = "button" onclick="submit('3')" value = "提交">
    </body>
</html>
<script>
function submit(e) {
    var input1 = document.getElementById("inputid");
    var age = e.elements[1].value;
    window.open("b.html?inputstr="+age);  //传入参数
}
</script>

b.html 文件  代码如下

<html>
    <head>
    </head>
    <body>
    </body>
</html>
<script>
    //获得参数的方法
    var request = {
        QueryString : function(val) {
            var uri = window.location.search;
            var re = new RegExp("" +val+ "=([^&?]*)", "ig");
            return ((uri.match(re))?(uri.match(re)[0].substr(val.length+1)):null);
        }
    }

    //调用方法获得参数
    var rt = request.QueryString("inputstr");
    alert(rt);
</script>

新建两个 a.html  和 b.html 文件,将代码直接拷贝进去就可以正常测试看见结果了

阅读全文

TOP