css (How)我可以有条件地根据它的前一个兄弟的大小(水平)居中一个div吗?

vxbzzdmp  于 2024-01-09  发布在  其他
关注(0)|答案(2)|浏览(157)

我有一个两列的网格。第一列是用户可以隐藏/显示的侧边栏,第二列是主要内容。

侧边栏显示x1c 0d1x
侧边栏隐藏

我想使用CSS(顺风,特别是)水平中心的主要内容,如果侧边栏隐藏。

代码

<div className="w-full grid grid-cols-[auto_1fr]">
  <MySidebarComponent />
  <MyMainComponent />
</div>

字符串

提问

我想tailwind的新has变体可能会有所帮助,但我无法让它工作。

注意事项

我的侧边栏有一个属性会根据它的打开/关闭状态而改变。注意,这是基于Headless UI's Disclosure component的。

打开状态

<div data-headlessui-state="open">
  <div>Other contents here...</div>
</div>

关闭状态

<div data-headlessui-state></div>  // No contents

Playground

A place to tinker

p8ekf7hl

p8ekf7hl1#

您可以使用tailwinds peer修饰符,它也支持基于数据属性的样式。

<div className="w-full grid grid-cols-[auto_1fr]">
    <div className="border border-blue-500 peer" data-headlessui-state="open">Sidebar</div>
    <div className="border border-red-500 peer-data-[headlessui-state='open']:text-left text-center">Main content</div>
</div>

字符串
这是一个working example

hmtdttj4

hmtdttj42#

这是一个pure CSS solution,我用一个'Next-sibling combinator'在操场上做的,如果侧导航的状态是“打开”,它会选择主内容div。

相关问题