目录
我们通过 element.css('属性','值')的方法来设置样式


我们刚刚只有一个盒子,现在我们搞四个盒子

发现都被设置了样式

也就是.css方法会将jQuery对象中的所有元素都设置样式。如果你使用原生的JS,你需要将得到的数组进行遍历。但在jQuery中是不用的,不仅是css方法,其余的方法也是一样,我们称这个性质为jQuery的隐式迭代
如果你要设置的属性值是300px这种,你不需要加引号,直接写300就可以了


css可以接收键值对形式的值以修改多组样式


使用键值对的时候属性可以不加引号,但是涉及到横杠的属性(像下面的background-color)要使用驼峰命名法(不使用就会报错)


鼠标放到哪个微博上哪个菜单就出现下拉菜单

代码
- html>
- <html lang="en">
-
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Documenttitle>
- head>
- <style>
- * {
- padding:0px;
- margin:0px;
- }
-
- li {
- list-style: none;
- }
-
- .biggest_ul {
- width:300px;
- display: flex;
- justify-content: space-between;
- margin:100px auto;
- }
-
- .biggest_ul li ul {
- display: none;
- }
- style>
- <body>
- <ul class="biggest_ul">
- <li>
- <a href="#">微博a>
- <ul>
- <li>
- <a href="#">私信a>
- li>
- <li>
- <a href="#">评论a>
- li>
- <li>
- <a href="#">@我a>
- li>
- ul>
- li>
-
- <li>
- <a href="#">微博a>
- <ul>
- <li>
- <a href="#">私信a>
- li>
- <li>
- <a href="#">评论a>
- li>
- <li>
- <a href="#">@我a>
- li>
- ul>
- li>
-
- <li>
- <a href="#">微博a>
- <ul>
- <li>
- <a href="#">私信a>
- li>
- <li>
- <a href="#">评论a>
- li>
- <li>
- <a href="#">@我a>
- li>
- ul>
- li>
- ul>
- body>
- <script src="../../jquery-3.6.1.min.js">script>
- <script>
- biggest_ul = $('.biggest_ul')
-
- biggest_ul.children('li').mouseover(function() {
- $(this).children('ul').css('display','block')
- })
-
- biggest_ul.children('li').mouseout(function() {
- $(this).children('ul').css('display','none')
- })
- script>
- html>
出了上面提到的之外使用了两个事件mouseover与mouseout,另外在jQuery中使用$(this)来代表this
也可以不用css进行操作,直接使用jQuery中的show()与hide()
效果相同

思路都是一样的,首先将所有都搞成原样,然后给特定的元素设置



也可以换一种写法,先给其他同类兄弟搞成原样,然后给点击的元素设置样式

效果相同


总的来讲后面这种写法更好些,没有引入变量,维护时方便些
效果是这样的


我就不搞淘宝那个图了,我搞点儿别的图
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Documenttitle>
- <style>
- section {
- display: flex;
- width:400px;
- height:300px;
- margin:100px auto;
- }
- .left {
- display: flex;
- flex-direction: column;
- width:20%;
- height:100%;
- }
-
- .left div {
- width:100%;
- height:20%;
- border:1px solid red;
- text-align: center;
- padding-top:10px;
- }
- .right {
- width:80%;
- height:100%;
- margin-left: 20px;
- }
- .right img {
- display: none;
- width:100%;
- height:100%
- }
- .right img:nth-child(1) {
- display: block;
- }
- style>
- head>
- <body>
- <section>
- <div class="left">
- <div>CSS3div>
- <div>JavaScriptdiv>
- <div>jquerydiv>
- <div>opencvdiv>
- <div>pyqt5div>
- <div>pythondiv>
- <div>pytorchdiv>
- <div>ubuntudiv>
- div>
- <div class="right">
- <img src="upload/CSS3.png" alt="">
- <img src="upload/JavaScript.png" alt="">
- <img src="upload/jquery.jpg" alt="">
- <img src="upload/opencv.png" alt="">
- <img src="upload/pyqt5.png" alt="">
- <img src="upload/python.png" alt="">
- <img src="upload/pytorch.png" alt="">
- <img src="upload/ubuntu.png" alt="">
- div>
- section>
- body>
- <script src="../jquery-3.6.1.min.js">script>
- <script>
- all_left_div = $('.left div')
- all_right_img = $('.right img')
-
- all_left_div.mouseover(function() {
- $(this).css('background-color','cyan')
- $(this).siblings('div').css('background-color','')
-
- index = $(this).index()
- all_right_img.eq(index).show()
- all_right_img.eq(index).siblings('img').hide()
- })
- script>
- html>



上面用到了 index = $(this).index() 拿到当前左侧悬停的索引
之前我们搞排他思想是这样写的

发现用了两次$(this),那么就可以这样写

效果是一样的


它是这样的

可以这样理解,有两种函数,一种是查询函数,一种是执行函数。像siblings(),parents()这种就是查询函数,查询函数能返回一个对象。像CSS这种就是执行函数
链条中的首位肯定是查询函数(或者叫一个对象)
这个时候判断是不是跟了一个执行函数,如果是执行函数就执行,执行后再判断是不是
如果还是就还执行,一直到后面跟的不是执行函数了,这个时候我们要换一个新的对象,再执行后面的执行函数

我们做一个例子
css

html

JS

结果是这样的

首先发现了第一个元素是son,然后发现后面是执行函数,给son搞了一个背景颜色,然后发现又是一个执行函数,给son搞了一个不透明度
下面发现后面不跟执行函数了,那么这个时候就换了一个对象,从这之后和son没有任何关系了,后面发现是个执行函数,给father搞了一个背景颜色
下面发现后面不跟执行函数了,这个时候又换了一个对象,从这之后和son,father没有任何关系了,后面发现是个执行函数,给grandpa搞了一个背景颜色
获取样式与设置样式的函数相同,我们使用 element.css('样式名') 来获取样式


如果样式过多我们通常给元素一个类名或删除元素一个类名来修改样式



删除一个类并不影响其他的类

toggleClass()可以把有的类变没,没的类变有


我们用一下jQuery来实现一下之前做个的tab栏切换功能
22.自定义属性_Suyuoa的博客-CSDN博客_removeattribute

我们依然沿用之前的CSS与html,js我们使用jQuery的方法
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Titletitle>
- <style>
- * {
- margin:0px;
- padding:0px;
- box-sizing:border-box;
- }
- li {
- list-style:none;
- float:left;
- margin-left:5px;
- cursor:pointer;
- }
- #tab {
- position:relative;
- width:500px;
- height:500px;
- margin:50px auto;
- }
-
- .content_area {
- position:absolute;
- top:20px;
- width:100%;
-
- }
-
- .current {
- background-color:red;
- color:white;
- }
-
- .content {
- position:absolute;
- display:none
- }
- style>
- head>
- <body>
- <div id="tab">
- <ul>
- <li class="current">商品介绍li>
- <li>规格与包装li>
- <li>售后保障li>
- <li>商品评价li>
- ul>
- <div class="content_area">
- <div class="content" style="display:block;">商品介绍内容div>
- <div class="content">规格与包装内容div>
- <div class="content">售后保障内容div>
- <div class="content">商品评价内容div>
- div>
- div>
- body>
- <script src="../jquery-3.6.1.min.js">script>
- <script>
- lis = $('#tab ul li')
- contents = $('.content')
-
- lis.click(function() {
- $(this).siblings().removeClass('current')
- $(this).addClass('current')
-
- index = $(this).index()
- contents.css('display','none')
- contents.eq(index).css('display','block')
- })
- script>
- html>
-
发现可以实现