最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關于React動態(tài)修改元素樣式的三種方式

 更新時間:2022年08月03日 14:37:15   作者:A豐休  
這篇文章主要介紹了關于React動態(tài)修改元素樣式的三種方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

React動態(tài)修改元素樣式

React動態(tài)修改元素樣式常用的方式有兩種:借助ref和通過動態(tài)控制狀態(tài)的變化修改元素的樣式

1.借助ref動態(tài)修改樣式

在需要修改樣式的元素上添加ref

<div className='scroll-title clear-fix' ref={ this.manage }>

在constructor中添加React.createRef()

this.manage = React.createRef()

在邏輯代碼中使用

this.manage.current.style.display = 'block'

如果代碼中識別不出this的話需要通過let that = this 改變this的指向

that.manage.current.style.display = 'block'

2.通過動態(tài)控制狀態(tài)的變化修改元素的樣式(兩種方式)

方式一

邏輯代碼中設置一個標志位display默認為true,通過對應的條件改變display的值為true或者false,進而將對應的樣式名賦值給DOM的className屬性,樣式寫在對應的style當中

例如:

?constructor() {
? ? ? ? super()
? ? ? ? this.state = {
? ? ? ? ? ? display: true
? ? ? ? }
? ? } ??
? ? componentDidMount() {
? ? ? ? window.onscroll = function(event) {
? ? ? ? ? ? ? ? if (divTop < -12) {
? ? ? ? ? ? ? ? ? ? ?that.setState({
? ? ? ? ? ? ? ? ? ? ? ? ?display: false
? ? ? ? ? ? ? ? ? ? ?})
? ? ? ? ? ? ? ? ? ? that.manage.current.style.display = 'block'
? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? ?that.setState({
? ? ? ? ? ? ? ? ? ? ? ? ?display: true
? ? ? ? ? ? ? ? ? ? ?})
? ? ? ? ? ? ? ? }
? ? ? ? }
? ? }
<div className={this.state.display ? 'none' : 'scroll-title }>

方式二

方式二和方式一實現的原理是一樣的,邏輯代碼中設置一個標志位display默認為true,通過對應的條件改變display的值為true或者false,進而將對應的樣式名賦值給DOM的className屬性,樣式寫在對應的style當中,不同之處在于邏輯代碼的判斷不是在DOM中,而是在js中判斷的,如下:

3.通過在DOM中使用JS代碼(三元運算符)

實現不同DOM的展示與隱藏轉換

方式三并不是嚴格意義上的改變樣式,只是用來改變顯示與隱藏及展示對應的組件的

小結一下:

  • 如果改變的樣式比較多而雜使用 2
  • 如果改變的樣式不太多使用 1和2
  • 如果僅僅是兩個組件的切換(顯示與隱藏)使用 3最方便

React樣式沖突問題

在react腳手架中已經有了sass的配置,因此只需要安裝sass的依賴包,就可以直接使用sass了

安裝sass依賴包

npm i sass -D?

- 把index.css改成index.scss

- 導入index.scss文件

注意:如果使用了scss,scss中使用圖片的絕對路徑的時候需要加上~ 

background-image: url(~assets/login.png);?

css-樣式私有化

css modules-基本使用

步驟

1.改樣式文件名。從 xx.scss -> xx.module.scss (React腳手架中的約定,與普通 CSS 作區(qū)分)

2.引入使用。

  • 組件中導入該樣式文件(注意語法)
import styles from './index.module.scss'
  • 通過 styles 對象訪問對象中的樣式名來設置樣式
<div className={styles.css類名}></div>

css類名是index.module.scss中定義的類名。

示例

定義樣式 index.module.css 

.root {font-size: 100px;}

使用樣式

import styles from './index.module.css'
<div className={styles.root}>div的內容</div>

原理

CSS Modules 通過自動給 CSS 類名補足類名,保證類名的唯一性,從而避免樣式沖突的問題  

css module的注意點 

類名最好使用駝峰命名,因為最終類名會生成styles的一個屬性

cssModules-維持類名 

格式

在xxx.module.scss中,如果希望維持類名,可以使用格式:

:global(.類名)

/*這樣css modules就不會修改掉類名.a了。等價于寫在 index.css中 */
:global(.a) { ? }
?
/* 這樣css modules就不會修改掉類名.a了, 但是 .aa還是會被修改 */
.aa :golbal(.a) { }

覆蓋第三方組件的樣式

:global(.ant-btn) {
? color: red !important;
}

css modules-最佳實踐

- 每個組件的根節(jié)點使用 CSSModules 形式的類名( 根元素的類名: root )

- 其他所有的子節(jié)點,都使用普通的 CSS 類名 :global

index.module.scss中

// index.module.scss
.root {
? display: 'block';
? position: 'absolute';
? // 此處,使用 global 包裹其他子節(jié)點的類名。此時,這些類名就不會被處理,在 JSX 中使用時,就可以用字符串形式的類名
? // 如果不加 :global ,所有類名就必須添加 styles.title 才可以
? :global {
? ? .title {
? ? ? .text {
? ? ? }
? ? ? span {
? ? ? }
? ? }
? ? .login-form { ... }
? }
}

組件使用

import styles from './index.module.scss'
const 組件 = () => {
? return (
? ? {/* (1) 根節(jié)點使用 CSSModules 形式的類名( 根元素的類名: `root` )*/}
? ?? ?<div className={styles.root}>
? ? ? {/* (2) 所有子節(jié)點,都使用普通的 CSS 類名*/}
? ? ?? ?<h1 className="title">
? ? ? ?? ?<span className="text">登錄</span> ?
? ? ? ?? ?<span>登錄</span> ?
? ? ? </h1>
?? ??? ??? ?<form className="login-form"></form>
? ? </div>
? )
}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • React實現復雜搜索表單的展開收起功能

    React實現復雜搜索表單的展開收起功能

    本節(jié)對于需要展開收起效果的查詢表單進行概述,主要涉及前端樣式知識。對React實現復雜搜索表單的展開-收起功能感興趣的朋友一起看看吧
    2021-09-09
  • react中ref獲取dom或者組件的實現方法

    react中ref獲取dom或者組件的實現方法

    這篇文章主要介紹了react中ref獲取dom或者組件的實現方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • React使用redux基礎操作詳解

    React使用redux基礎操作詳解

    這篇文章主要介紹了如何在React中直接使用Redux,目前redux在react中使用是最多的,所以我們需要將之前編寫的redux代碼,融入到react當中去,本文給大家詳細講解,需要的朋友可以參考下
    2023-01-01
  • React中useState值為對象時改變值不渲染問題

    React中useState值為對象時改變值不渲染問題

    這篇文章主要介紹了React中useState值為對象時改變值不渲染問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • React.memo?React.useMemo對項目性能優(yōu)化使用詳解

    React.memo?React.useMemo對項目性能優(yōu)化使用詳解

    這篇文章主要為大家介紹了React.memo?React.useMemo對項目性能優(yōu)化的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • ReactHooks批量更新state及獲取路由參數示例解析

    ReactHooks批量更新state及獲取路由參數示例解析

    這篇文章主要介紹了React Hooks如何實現批量更新state以及獲取路由參數的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • React?中的重新渲染類組件及函數組件

    React?中的重新渲染類組件及函數組件

    這篇文章主要為大家介紹了React?中的重新渲染類組件及函數組件使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • React+Electron快速創(chuàng)建并打包成桌面應用的實例代碼

    React+Electron快速創(chuàng)建并打包成桌面應用的實例代碼

    這篇文章主要介紹了React+Electron快速創(chuàng)建并打包成桌面應用,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • React組件的創(chuàng)建與state同步異步詳解

    React組件的創(chuàng)建與state同步異步詳解

    這篇文章主要介紹了react組件實例屬性state,有狀態(tài)state的組件稱作復雜組件,沒有狀態(tài)的組件稱為簡單組件,狀態(tài)里存儲數據,數據的改變驅動頁面的展示,本文結合實例代碼給大家詳細講解,需要的朋友可以參考下
    2023-03-03
  • 基于react項目打包css引用路徑錯誤解決方案

    基于react項目打包css引用路徑錯誤解決方案

    這篇文章主要介紹了基于react項目打包css引用路徑錯誤解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10

最新評論

比如县| 古浪县| 固始县| 邻水| 临泉县| 元阳县| 泊头市| 黎川县| 苗栗市| 汶上县| 鄂托克旗| 体育| 靖远县| 石嘴山市| 连云港市| 三都| 三都| 融水| 高碑店市| 开江县| 林芝县| 桂平市| 毕节市| 广宁县| 长葛市| 东海县| 石狮市| 普格县| 南木林县| 龙里县| 盘锦市| 通海县| 错那县| 瓦房店市| 家居| 桐柏县| 灵丘县| 鄂尔多斯市| 青岛市| 大名县| 哈巴河县|