自己查資料總結的兩種方法
一、純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>