suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Ternärer Operator für If/Else if/Else-Anweisungen

Ich versuche, in React js ein bedingtes Styling durchzuführen. Ich bin ein React-Neuling, daher gibt es vielleicht eine bessere Möglichkeit, dies zu tun, aber die Suche im Internet vergeblich. Ich versuche, die Bildschirmgröße und den Stil anhand dieser Bildschirmgröße zu überprüfen. In diesem Anwendungsfall möchte ich Text basierend auf der Bildschirmgröße zentrieren. Kann mir jemand sagen, ob es einen besseren Weg gibt, dies zu tun? Derzeit funktioniert das bei mir nicht.

BEARBEITEN: Wenn Sie dort einige Protokolle einfügen, wird „textAlign“ beim Laden der Seite überhaupt nicht auf das Element angewendet, obwohl die Bildschirmgröße > Sobald ich den Bildschirm auf < 993px und > verkleinere, wird „textAlign:center“ auf das Element angewendet. Es hält es zentriert.

const styles = {
    footerColOne:{
        textAlign: deviceSize > 993 ? "none" : (deviceSize < 993 && deviceSize > 578) ? "center" : "none",
        paddingLeft: deviceSize < 993 ? "26px" : "80px",
        paddingTop: deviceSize < 993 ? "28px" : "63px",
    },
    footerColTwo:{
        textAlign: deviceSize > 993 ? "none" : (deviceSize < 993 && deviceSize > 578) ? "center" : "none",
        paddingLeft: deviceSize < 993 ? "26px" : deviceSize < 578 ? "51px" : "50px",
        paddingTop: deviceSize < 993 ? "40px" : "86px",
    },
  }

Dann nenne ich diesen Stil

<Col lg={3} style={ styles.footerColOne }>

Jede Hilfe wird sehr geschätzt.

Letzte Änderung:

Ich habe also herausgefunden, dass Medienabfragen hier tatsächlich der bevorzugte Weg sind, obwohl ich einen Idiotenfehler gemacht habe und textAlign 设置为 none ,但我上面的三元条件有效。在这种情况下,应将其设置为 initial hinzugefügt habe, als der Wert für die Immobilie nicht vorhanden war.

P粉320361201P粉320361201245 Tage vor329

Antworte allen(2)Ich werde antworten

  • P粉785905797

    P粉7859057972024-03-29 15:37:34

    const getDevice = (deviceSize) => 
        deviceSize < 993 
            ? (deviceSize < 993 && deviceSize > 578) 
                ? 'tablet'
                : 'mobile'
            : 'web'
    
    
    // if declare css -> return class
    // component use className instead of styles
    // 
    const footerColOne = {
        'web': () => {
    
            return {
                textAlign: 'none',
                paddingLeft: '26px',
                paddingTop: '28px'
            }
        },
        'tablet': () => {
            return {
                textAlign: 'center',
                paddingLeft: '80px',
                paddingTop: '63px'
            }
        },
        'mobile': () => {
            return {
                textAlign: 'none',
                paddingLeft: '80px',
                paddingTop: '63px'
            }
        }
    }
    
    
    const styles = {
        footerColOne: footerColOne[getDevice(deviceSize)]()
    }
    
    console.log(styles.footerColOne)
    
    // 

    Antwort
    0
  • P粉831310404

    P粉8313104042024-03-29 12:12:11

    media query 非常适合这里。

    @media screen and (min-width: 578px) and (max-width: 993px) {
      .someclass {
       text-align:center;
      }
    }
    
    @media screen and (max-width: 993px) {
      .someclass {
       text-align:center;
       padding-left:26px;
       padding-right:28px;
      }
    }
    
    @media screen and (min-width: 993px) {
      .someclass {
        text-align:left /* none as you wanted. /*;
      }
    }
    

    既然如此,

    max-width 如果屏幕尺寸低于此 max-width,则将应用此 media 查询 中的所有样式。

    如果屏幕尺寸大于min-width,则将应用此media查询中的所有样式。

    Antwort
    0
  • StornierenAntwort