【问题标题】:How to cause overflow of the neighbor cell when using negative margin使用负边距时如何导致相邻单元格溢出
【发布时间】:2014-09-17 15:05:36
【问题描述】:

在使用 CSS 表格布局时,我想使用负边距导致相邻表格单元格溢出。

更新 3 - 这是我想要的,但没有明确指定绿框宽度:

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>

    <div style="display: table; margin-left: 300px;">
        <div style="display: table-row;">

            <!--Hack: width: 250px;-->
            <div style="display: table-cell; background-color: green; height: 30px; overflow-x: visible; width: 250px;"></div>


            <div style="display: table-cell; background-color: gray; height: 30px;">

                <div style="position: relative; width: 100%; background-color: azure;">
                    <div style="position: relative; width: 500px; margin-left: -250px; background-color: yellow; height: 5px;"></div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>

更新 2

@Per Salbark - 情况相当简单。黄色框由用户设计,而 grin 和灰色框是“框架”部分。黄色框的中心必须与第一个单元格的右边缘对齐。绿色和灰色框的宽度必须相同并且等于黄色框宽度/2。 (请注意,我在绿色单元格中添加了一个 ? 标记只是为了确保它可见,否则它应该是空白的)。

这里的关键点是,当人们为他们的黄色框设置样式时,他们不需要知道绿色框也需要设置样式,因为负边距不起作用。

更新 1 -

问:我为什么需要它?

A:我正在努力使我的布局尽可能动态。绿色单元格包含未知宽度的东西,黄色框宽度也是可变的。我必须完整地展示他们的内容。我原以为主 div(表格)会溢出并使用第一个单元格自行扩展,但没有发生。

http://jsbin.com/koqefomevulu/1/edit?html,output

<div style="display: table; margin-left: 300px;">
    <div style="display: table-row;">
        <div style="display: table-cell; background-color: green; overflow-x: visible; 
         height: 30px">
        ?
        </div>
        <div style="display: table-cell; background-color: gray; height: 30px;">
            <div style="position: relative; width: 100%; background-color: azure;">
                <div style="position: relative; width: 500px;
                 margin-left: -250px; background-color: yellow; height: 5px;">
                </div>
            </div>
        </div>
    </div>
</div>

基本上我希望绿色单元格扩大250px 以完全适合黄色框 - 想知道是否有可能实现它?

【问题讨论】:

  • 这肯定是一个棘手的问题......可能更好地解释你想要实现的目标并寻找替代解决方案
  • HTML结构可以改吗?
  • @misterManSam 可以。
  • 好的。好吧,我现在可以告诉你,纯 CSS 不会发生这种情况。绿色和黄色元素的 DOM 关系不容易用 CSS 定位,负边距也无济于事 :) 所以这让我怀疑这是否是正确的方法。我要求查看您目标的屏幕截图,以便一起提出不同的方法。如果你真的想解决这个问题,并且可以以任何方式更改 HTML 和 CSS,我想我可以帮助你。但并非没有看到具有正确内容的预期最终结果的示例。
  • 是的,我还是不明白。对不起。也许别人会明白……

标签: css html


【解决方案1】:

编辑:看到这个:http://jsbin.com/xibeyucelowu/1/ - 不需要设置固定边距或宽度 - 我认为比我发布的其他小提琴更好..


这是怎么回事:http://jsbin.com/koqefomevulu/29/

它的工作原理类似于将绿色的宽度设置为250px

之所以有效,是因为黄色的宽度正好是负边距的两倍……也许一些 JS 在加载黄色的动态内容后设置负边距?您只需要以这种方式定位一个元素。我认为您不会仅使用 CSS 找到解决方案..

是否需要使用表格样式?

【讨论】:

  • 不是坏事,而是我没有控制黄色条样式的东西——这就是关键。如果您从绿色框中删除文本并将黄色框的宽度设置为 500(这是人们会做的),我们将回到第一格。
  • 从绿色框中删除文本不会改变任何东西...所以您无法控制黄色的任何样式?你允许用户提供什么样的输入?仅基于像素的宽度,还是更多设置?
  • 黄色框可以有类名,也可以包含自定义渲染的内容。
猜你喜欢
  • 2016-09-12
  • 2021-06-17
  • 1970-01-01
  • 1970-01-01
  • 2011-10-28
  • 2011-09-12
  • 1970-01-01
  • 1970-01-01
  • 2020-05-02
相关资源
最近更新 更多