动态改变伪元素样式的方(用:after和:before生成的元素)

自己查资料总结的两种方法

一、纯css改变

  a:hover:before{left:-20%;}  a:hover:after{right:-20%;}  a:before{  left:-100%; }  a:after{  right:-100%;  }利用元素名:hover:before{改变的样式内容},当鼠标移到该元素上时,伪元素的样式进行改变,hover和before之间一定不能有空格,这里连写在一起是代表并,and的意思,在css中没有and关键词,用连写方式代替,例如:not(:first-child)表示非第一个子元素。这个方法不会动态增加代码量,但是只能鼠标悬浮事件,点击事件能用:target,但是这个属性的兼容性不好
:target定义和用法

URL 带有后面跟有锚名称 #,指向文档内某个具体的元素。这个被链接的元素就是目标元素(target element)。

:target 选择器可用于选取当前活动的目标元素。

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
       body,div,p,a{margin: 0;padding: 0;}
        body{background: #00AA88}
        div{
            /*外面框框的div样式*/
            width: 200px;
            position: relative;
            overflow: hidden;
            height: 150px;
        }
        a{ display: inline-block; }
       a:before,a:after{
           /*动态加载的元素*/
            content:"";
            display: inline-block;
            position: absolute;
            width: 70%;
            height:100%;
            transform: skewX(20deg);
            background: #fff;
            opacity: 0.3;
           transition: all .3s linear;
           top:0;
        }
       p{
           /*里面框的样式*/
           background: #003eff;
           display: inline-block;
            width: 200px;
           height: 150px;
        }
        a:hover:before{left:-20%;}
        a:hover:after{right:-20%;}
        a:before{  left:-100%; }
        a:after{  right:-100%;  }

    </style>
</head>
<body>
    <div id="d1" class="w">
        <a id="i" href="#" class="a1">
           <p></p>
        </a>
    </div>


二、用js改变样式
$(‘<style> a:before{left:-100%;} a:after{right:-100%;} </style>‘).appendTo(‘head‘)这个方法可以用于用于任何事件,但是有个不好的地方,会在head上面一直增加代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
       body,div,p,a{margin: 0;padding: 0;}
        body{background: #00AA88}
        div{
            /*外面框框的div样式*/
            width: 200px;
            position: relative;
            overflow: hidden;
            height: 150px;
        }
        a{ display: inline-block; }
       a:before,a:after{
           /*动态加载的元素*/
            content:"";
            display: inline-block;
            position: absolute;
            width: 70%;
            height:100%;
            transform: skewX(20deg);
            background: #fff;
            opacity: 0.3;
           transition: all .3s linear;
           top:0;
        }
       p{
           /*里面框的样式*/
           background: #003eff;
           display: inline-block;
            width: 200px;
           height: 150px;
        }
        /*a:hover:before{left:-20%;}*/
        /*a:hover:after{right:-20%;}*/
        a:before{  left:-100%; }
        a:after{  right:-100%;  }

    </style>
</head>
<body>
    <div id="d1" class="w">
        <a id="i" href="#" class="a1">
           <p></p>
        </a>
    </div>
    <script src="js/jquery-1.11.3.js"></script>
    <script>
           var b=$("a:before");
            var a=$("#i");
            a.hover(function () {
                $(‘<style>a:before{left:-20%;} a:after{right:-20%;} </style>‘).appendTo(‘head‘)
            },function () {
                $(‘<style> a:before{  left:-100%; } a:after{  right:-100%;  } </style>‘).appendTo(‘head‘)
            })
    </script>
</body>
</html>

 

原文地址:https://www.cnblogs.com/shuen/p/8995201.html

时间: 2024-08-06 22:05:20

动态改变伪元素样式的方(用:after和:before生成的元素)的相关文章

jQuery如何改变css伪元素样式

首先我们看一下css伪元素是什么: CSS 伪元素用于向某些选择器设置特殊效果. 伪元素有哪些: :first-line 伪元素:"first-line" 伪元素用于向文本的首行设置特殊样式. :first-letter 伪元素:"first-letter" 伪元素用于向文本的首字母设置特殊样式. :before 伪元素:":before" 伪元素可以在元素的内容前面插入新内容. :after 伪元素:":after" 伪元素

伪类常见用法及动态更改内容、样式的方法

伪类after等常用来清除浮动.增加附加内容,利用伪类常会减少div容器的使用,使得我们的页面内容结构清晰. 本文将会简介伪类的常见用法,并以jquery为例详述如何动态更改伪类内容(content)及伪类样式.   一.常见用法 1.1 清除浮动 <div class="my-container"> <div>内容1</div> <div class="sec" data-attr='前之啊是'>内容2</di

如何自动在html页面加载时动态改变div等元素的高度和宽度

这里需要用到jquery + css.原理是在页面加载时用javascript去动态改变一个class的高度和宽度.这样结合javascript能动态获取浏览器/页面的高度和宽度,从而使得div能动态的跟随浏览页面的大小变化而变化并且不影响高宽比.下面的代码创建一个手机页面,每一行三个图片分占33%,每个图片div的高和宽会随着浏览器的大小变化而自适应. <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"

选中多选框时改变相对应的包裹复选框的元素样式

首先 有这样的一个效果: 即选中复选框的时候,相对应的li将改变背景色等样式,完整的实现效果主要代码如下 原始html文件 <div class="check"> <h5>症状(可多选)</h5> <ul class="flex"> <li class="radius"> 单颗牙缺失<input name="症状" type="checkbox&quo

javascript生成表格增删改查 JavaScript动态改变表格单元格内容 动态生成表格 JS获取表格任意单元格 javascript如何动态删除表格某一行

jsp页面表格布局Html代码 <body > <center> <input type="text" value="111" id="mytext"> <table border="1" width="60%" id="mytable"> <tr> <td id="td1">第一行第一列<

原生js获取元素样式

摘要: 我们在开发过程中经常会遇到通过js获取或者改变DOM元素的样式,方法有很多,比如:通过更改DOM元素的class.现在我们讨论原生js来获取DOM元素的CSS样式,注意是获取不是设置 在开始之前先说下获取最终应用在元素上的所有CSS属性对象的意思是,如果没有给元素设置任何样式,也会把浏览器默认的样式返回来. 1.ele.style 在学习DOM的时候就看到通过ele.style来获取元素样式值,但是有时候获取的并非是节点的样式值,而是空值.这是因为ele.style只能获取写在元素标签中

Dom修改元素样式

提纲:我们可以通过js来修改元素的大小,颜色,位置等样式 1.element.style                         行内样式的操作 2.element.className              可以获取元素的class名称 3.element.setAttribute("type","button");                获取元素修改元素的行内样式 4.insertRule(rule,index)       .document

WPF 中动态改变控件模板

在某些项目中,可能需要动态的改变控件的模板,例如软件中可以选择不同的主题,在不同的主题下软件界面.控件的样式都会有所不同,这时即可通过改变控件模板的方式实现期望的功能. 基本方法是当用户点击切换主题按钮是加载新的资源字典,并使用新加载的资源字典替代当前的资源字典这时要用到ResourceManager. 假设现有两个不同的资源字典文件Dictionary1.xaml和Dictionary2.xaml存在于Themes文件夹内: 在MainPage中使用其中一个资源字典作为默认样式文件: <Win

javascript 获取元素样式的方法

javascript 获取元素样式常用方法. Javascript获取CSS属性值方法:getComputedStyle和currentStyle 1 .对于元素的内联CSS样式(<div style="color:#369">hello</div>),可以直接使用element.style.color来直接获取css属性的值: 2. 但是对于外部定义的css样式使用这种方式就无法获取了,而且IE浏览器和其他标准浏览器(Firefox,Chrome,Opera,