nextjs —— jsx style 学习记录

Posted Lemo_wd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nextjs —— jsx style 学习记录相关的知识,希望对你有一定的参考价值。

作用域

全局

<style global jsx>{`
  .hero {
    width: 100%;
    color: #333;
  }
  .title {
    margin: 0;
    width: 100%;
    padding-top: 80px;
    line-height: 1.15;
    font-size: 48px;
  }
`}</style>

host scope

<div className="root">
    <style jsx>{`
      .root {
        color: green;
      }
    `}</style>
  </div>

one-off global(只针对某个 css 全局)

import Select from ‘react-select‘
export default () => (
  <div>
    <Select optionClassName="react-select" />

    <style jsx>{`
      /* "div" will be prefixed, but ".react-select" won‘t */

      div :global(.react-select) {
        color: red
      }
    `}</style>
  </div>
)

 

动态 style

① 行内 sytle

const Button = ({ padding, children }) => (
  <button style={{ padding }}>
     { children }
     <style jsx>{`
        button {
          padding: 20px;
          background: #eee;
          color: #999
        }
     `}</style>
  </button>
)

② className 切换

const Button = (props) => (
  <button className={ ‘large‘ in props && ‘large‘ }>
     { props.children }
     <style jsx>{`
        button {
          padding: 20px;
          background: #eee;
          color: #999
        }
        .large {
          padding: 50px
        }
     `}</style>
  </button>
)

 

③ jsx style 变量

const Button = (props) => (
  <button>
     { props.children }
     <style jsx>{`
        button {
          padding: ${ ‘large‘ in props ? ‘50‘ : ‘20‘ }px;
          background: ${props.theme.background};
          color: #999;
          display: inline-block;
          font-size: 1em;
        }
     `}</style>
  </button>
)

或(直接通过 js 引入常量)

import { colors, spacing } from ‘../theme‘
import { invertColor } from ‘../theme/utils‘

const Button = ({ children }) => (
  <button>
     { children }
     <style jsx>{`
        button {
          padding: ${ spacing.medium };
          background: ${ colors.primary };
          color: ${ invertColor(colors.primary) };
        }
     `}</style>
  </button>
)

 

 

233 

 

以上是关于nextjs —— jsx style 学习记录的主要内容,如果未能解决你的问题,请参考以下文章

[classname当我在nextjs的jsx中使用时感到困惑

样式 JSX 无法与 NextJS 中的 @media-query 一起正常工作

在 NextJs 中的组件之间共享 props

表达式预期和语法错误:Unexpected token jsx nextjs

nextjs 中使用 stylejsx 的背景图片

nextjs + react-native-web + styled-components :warnOnce