material-ui [范围化的CSS基线] 当传递动态尺寸时,样式注入顺序发生变化,

xoshrz7s  于 4个月前  发布在  其他
关注(0)|答案(7)|浏览(76)

重复问题

  • 我搜索了现有的问题

最新版本

  • 我测试了最新版本

当前行为 😯

请参考这个复现器 - codesandbox
我创建了两个主题 - theme1 (spacing - 4)theme2 (spacing 2) 。我在每个主题下渲染了MUI滑块,并将其 Package 在 ScopedCssBaseline 下。在每个主题中,我都通过覆盖ScopedCssBaseline的样式来添加自定义滚动条样式。在自定义滚动条中,我传递了 minHeight css属性,这是动态的,并且取决于每个主题中的间距因子。
问题是,当我在每个主题下渲染两个滑块并使用ScopedCssBaseline时,我看到滑块轨道高度之间的差异。进一步调查后,我发现这是因为ScopedCssBaseline在每个滑块中应用样式的顺序发生了变化。

第一个滑块的样式顺序:

第二个滑块的样式顺序:

由于顺序的变化,box-sizing属性被覆盖,导致滑块轨道高度缩小。如果我们在customScrollbar中将 minHeight 作为静态值 50px 给出,问题就会消失。
#20461 所建议的那样,我也首先导入了 ScopedCssBaseline ,但仍然会改变顺序。

预期行为 🤔

理想情况下,两个滑块应该具有相同的轨道高度。

重现步骤 🕹

步骤:

  1. 访问代码沙箱复现器 - https://codesandbox.io/s/continuousslider-demo-material-ui-forked-i7dbn3
  2. 注意第二个滑块和轨道高度。它会比第一个小。理想情况下,它们应该是相同的。
  3. 将 customScrollbar 样式中的 minHeight 更改为 50px ,问题将得到解决。
    所以看起来添加动态大小会改变样式注入顺序。

上下文 🔦

我试图在一个页面中展示所有自定义主题的组件外观和感觉,以便进行更好的比较。

你的环境 🌎

npx @mui/envinfo

System:
    OS: Linux 3.10 Red Hat Enterprise Linux Server 7.9 (Maipo)
  Binaries:
    Node: 16.13.0 
    Yarn: 1.22.11 
    npm: 7.23.0 
  Browser:
    Chrome: 103.0.5060.114 (Official Build) (64-bit)
  npmPackages:
    @emotion/react: ^11.9.3 => 11.9.3 
    @emotion/styled: ^11.9.3 => 11.9.3 
    @mui/icons-material: ^5.8.4 => 5.8.4 
    @mui/lab: 5.0.0-alpha.87 => 5.0.0-alpha.87 
    @mui/material: ^5.8.5 => 5.8.6 
    @mui/types:  7.1.3 
    @types/react: ^17.0.6 => 17.0.45 
    react: ^17.0.0 => 17.0.2 
    react-dom: ^17.0.2 => 17.0.2 
    typescript:  4.7.4
gwo2fgha

gwo2fgha1#

我建议使用 GlobalStyles 并为不同的根元素添加样式。这样对你有用吗:https://codesandbox.io/s/beautiful-water-71b8pz?file=/src/App.tsx ?
正如 #20461 中建议的那样,我也首先导入了 ScopedCssBaseline,但顺序仍然在改变。
是的,这仅适用于 styled components,而不适用于 emotion。

uurity8g

uurity8g2#

我建议使用GlobalStyles并在不同的根元素下添加样式。这样的解决方案是否适用于您:https://codesandbox.io/s/beautiful-water-71b8pz?file=/src/App.tsx?
我认为我可以接受您提出的解决方案,并在customScrollbar中传递静态高度。但我的主要关注点是理解为什么在ScopedCssBaseline中传递动态尺寸会导致第二个滑块的样式注入顺序发生变化,而第一个滑块则可以正常工作。
您是否还建议我们应该优先使用GlobalStyles而不是ScopedCssBaseline组件?

vd8tlhqk

vd8tlhqk3#

我遇到了类似的问题,同一个组件的样式应用顺序在两个示例之间是不同的。然而,我没有使用ScopedCssBaseline,只是一次性定制覆盖了一个嵌套组件的样式。该组件包含一个Autocomplete,它渲染了一个带有以下 sx 定制的TextField:

sx={{
  "& .MuiFilledInput-root.MuiInputBase-sizeSmall": {
    paddingBottom: '4px'
  }
}}

两个示例紧挨着渲染,第二个示例的底部填充被组件的一些默认样式覆盖了。

版本:

@mui/material: 5.8.1
@mui/styles: 5.8.0

ohtdti5x

ohtdti5x4#

你好,团队,有更新的消息吗?

7fyelxc5

7fyelxc55#

有任何更新吗?

j5fpnvbx

j5fpnvbx6#

marmelab/react-admin#8216 后也遇到了同样的问题。更一般的 MuiScopedCssBaseline-root * 应该比具体的 MuiSlider-root 规则具有较低的优先级。CSS 顺序的更改导致了奇怪的 UI 故障,有任何更新吗?

pcrecxhr

pcrecxhr7#

我的滑块也出现了同样的问题。有什么解决方案或解决方法吗?我给content-box添加了!important,但我对这个解决方案不太满意

相关问题