zoukankan      html  css  js  c++  java
  • 0163 DOM操作元素 之 样式属性操作:style、className、淘宝点击关闭二维码、循环精灵图背景、显示隐藏文本框内容、密码框格式提示错误信息

    我们可以通过 JS 修改元素的大小、颜色、位置等样式。

    常用方式

    1、element.style 行内样式操作  
    2、element.className 类名样式操作
    

    1.5.6.1 方式1:通过操作style属性

    元素对象的style属性也是一个对象!

    元素对象.style.样式属性 = 值;

    注意: 
    1、JS 里面的样式采取驼峰命名法 比如 fontSize、 backgroundColor 
    2、JS 修改 style 样式操作,产生的是行内样式,CSS 权重比较高
    

    1550736620181


    案例代码

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            div {
                 200px;
                height: 200px;
                background-color: pink;
            }
        </style>
    </head>
    
    <body>
        <div></div>
        <script>
            // 1. 获取元素
            var div = document.querySelector('div');
            // 2. 注册事件 处理程序
            div.onclick = function() {
                // div.style里面的属性 采取驼峰命名法 
                this.style.backgroundColor = 'purple';
                this.style.width = '250px';
            }
        </script>
    </body>
    
    </html>
    

    案例:淘宝点击关闭二维码

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            .box {
                position: relative;
                 74px;
                height: 88px;
                border: 1px solid #ccc;
                margin: 100px auto;
                font-size: 12px;
                text-align: center;
                color: #f40;
                /* display: block; */
            }
            
            .box img {
                 60px;
                margin-top: 5px;
            }
            
            .close-btn {
                position: absolute;
                top: -1px;
                left: -16px;
                 14px;
                height: 14px;
                border: 1px solid #ccc;
                line-height: 14px;
                font-family: Arial, Helvetica, sans-serif;
                cursor: pointer;
            }
        </style>
    </head>
    
    <body>
        <div class="box">
            淘宝二维码
            <img src="images/tao.png" alt="">
            <i class="close-btn">×</i>
        </div>
        <script>
            // 1. 获取元素 
            var btn = document.querySelector('.close-btn');
            var box = document.querySelector('.box');
            // 2.注册事件 程序处理
            btn.onclick = function() {
                box.style.display = 'none';
            }
        </script>
    </body>
    
    </html>
    

    案例:循环精灵图背景

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
            
            li {
                list-style-type: none;
            }
            
            .box {
                 250px;
                margin: 100px auto;
            }
            
            .box li {
                float: left;
                 24px;
                height: 24px;
                background-color: pink;
                margin: 15px;
                background: url(images/sprite.png) no-repeat;
            }
        </style>
    </head>
    
    <body>
        <div class="box">
            <ul>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
            </ul>
        </div>
        <script>
            // 1. 获取元素 所有的小li 
            var lis = document.querySelectorAll('li');
            for (var i = 0; i < lis.length; i++) {
                // 让索引号 乘以 44 就是每个li 的背景y坐标  index就是我们的y坐标
                var index = i * 44;
                lis[i].style.backgroundPosition = '0 -' + index + 'px';
                // lis[i].style.backgroundPosition = `0 -${i * 44}px`; // 我的写法
            }
        </script>
    </body>
    
    </html>
    


    案例:显示隐藏文本框内容

        <input type="text" value="手机" style="color: #999;">
        <script>
            // 1.获取元素
            var text = document.querySelector('input');
            // 2.注册事件 获得焦点事件 onfocus 
            text.onfocus = function() {
                    // console.log('得到了焦点');
                    if (this.value === '手机') {
                        this.value = '';
                    }
                    // 获得焦点需要把文本框里面的文字颜色变黑
                    this.style.color = '#333';
                }
                // 3. 注册事件 失去焦点事件 onblur
            text.onblur = function() {
                // console.log('失去了焦点');
                if (this.value === '') {
                    this.value = '手机';
                }
                // 失去焦点需要把文本框里面的文字颜色变浅色
                this.style.color = '#999';
            }
        </script>
    

    方式2:通过操作className属性

    我们可以通过 JS 修改元素的大小、颜色、位置等样式。

    元素对象.className = 值;

    因为class是关键字,所有使用className。

    注意:

    1、如果样式修改较多,可以采取操作类名方式更改元素样式。

    2、class因为是个保留字,因此使用className来操作元素类名属性

    3、 className 会直接更改元素的类名,会覆盖原先的类名。


    案例代码

    <body>
        <div class="first">文本</div>
        <script>
            // 1. 使用 element.style 获得修改元素样式  如果样式比较少 或者 功能简单的情况下使用
            var test = document.querySelector('div');
            test.onclick = function() {
                // this.style.backgroundColor = 'purple';
                // this.style.color = '#fff';
                // this.style.fontSize = '25px';
                // this.style.marginTop = '100px';
    
                // 2. 我们可以通过 修改元素的className更改元素的样式 适合于样式较多或者功能复杂的情况
                // 3. 如果想要保留原先的类名,我们可以这么做 多类名选择器
                // this.className = 'change';
                this.className = 'first change';
            }
        </script>
    </body>
    

    案例:密码框格式提示错误信息

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            div {
                 600px;
                margin: 100px auto;
            }
            .message {
                display: inline-block;
                font-size: 12px;
                color: #999;
                background: url(images/mess.png) no-repeat left center;
                padding-left: 20px;
            }
            .wrong {
                color: red;
                background-image: url(images/wrong.png);
            }
            .right {
                color: green;
                background-image: url(images/right.png);
            }
        </style>
    </head>
    
    <body>
        <div class="register">
            <input type="password" class="ipt">
            <p class="message">请输入6~16位密码</p>
        </div>
        <script>
            // 首先判断的事件是表单失去焦点 onblur
            // 如果输入正确则提示正确的信息颜色为绿色小图标变化
            // 如果输入不是6到16位,则提示错误信息颜色为红色 小图标变化
            // 因为里面变化样式较多,我们采取className修改样式
            // 1.获取元素
            var ipt = document.querySelector('.ipt');
            var message = document.querySelector('.message');
            //2. 注册事件 失去焦点
            ipt.onblur = function() {
                // 根据表单里面值的长度 ipt.value.length
                if (this.value.length < 6 || this.value.length > 16) {
                    // console.log('错误');
                    message.className = 'message wrong';
                    message.innerHTML = '您输入的位数不对要求6~16位';
                } else {
                    message.className = 'message right';
                    message.innerHTML = '您输入的正确';
                }
            }
        </script>
    </body>
    
    </html>
    

  • 相关阅读:
    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期
    Maven(一)初识Maven
    MySQL(十一)之触发器
    MySQL(十)之视图
    MySQL(九)之数据表的查询详解(SELECT语法)二
    MySQL(九)之数据表的查询详解(SELECT语法)一
    关于oracle的锁表解决session marked for kill
    shell脚本清空redis库缓存
    Java 数组拷贝方法 System.arraycopy
    oracle 替换字符 replace
  • 原文地址:https://www.cnblogs.com/jianjie/p/12167336.html
Copyright © 2011-2022 走看看