1

我想达到以下效果:http: //jsfiddle.net/3KJta/1/

在此处输入图像描述

但是,我的解决方案对小 div 和较大的 div使用已知宽度。我需要它来处理可变大小的 div。这个用例是一个工具提示,它出现在一个较小的灵活大小的元素上方。工具提示内容未知,因此宽度可以是任何值。

到目前为止,我有:

<div class="small">
    <div class="smaller"></div>
    <div class="larger"></div>
</div>

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

div {
    border: 2px solid black;
}

.small {
    width: 50px;
    height: 50px;
    position: absolute;
    left: 200px;
    top: 50px;
    text-align: center;
}

.smaller {
    width: 20px;
    height: 20px;
    border-color: red;
    display: inline-block;
}

.larger {
    width: 200px;
    height: 200px;
    border-color: blue;
    display: inline-block;
    margin-left: -75px /* NOTE: in reality, .small has a variable width, and so does .larger, so i can't just take off this fixed margin */
}
4

2 回答 2

2

如果您可以使用 css3 并且只支持现代浏览器,您可以使用transform: translateX(-50%);将较大的框(当前支持的浏览器)居中。

看这个例子:http: //jsfiddle.net/2SQ4S/1/

于 2013-10-31T18:19:00.397 回答
0

如果您使用和额外的元素,您可以这样做:

<div class="small">
    <div class="smaller"></div>
    <div class="larger">
        <div>I'm extra</div>
    </div>
</div>

CSS

.larger {
    position:relative; 
    left:50%;
    width:8000%;
    margin-left:-4000%;
    text-align:center;
    border:none;
}
.larger div {
    width: 200px;
    height: 200px;
    border-color: blue;
    margin:auto;
}

http://jsfiddle.net/3KJta/4/

尽管这确实会导致内容比页面宽的一些问题,因此您需要将其全部放在一个容器中overflow:hidden

http://jsfiddle.net/3KJta/7/

不过都有点难看。也许有一个解决方案可以避免这样做。也许是一个 JS 解决方案,可以测量您尝试显示的内容的大小并对其进行偏移。

于 2013-10-31T17:55:23.953 回答