【问题标题】:Making an absolutely positioned div container match the width of its contents使绝对定位的 div 容器与其内容的宽度相匹配
【发布时间】:2012-10-26 19:46:27
【问题描述】:

我有一个 CSS 设置,其中我有一个绝对定位的 PNG 图像,它有一个透明区域,作为一个窗口,让一个充满图像的 div 在它后面显示。那个 div 也是绝对定位的,它的内容是一系列向左浮动的图像,因此它们都在一行中。

问题是这个充满图像的 div 比容器宽得多,所以除非我为图像容器 div 指定宽度,否则所有图像都只是垂直堆叠。我希望它们并排排列,但我不能硬编码包含 div 的宽度值,因为它可以改变。我该怎么做呢?这是我的代码:

<div class="slider_box">
    <div class="slider_images">
        <img class="slider_image" src="img/share/recipes/pizza.jpg" alt="Pizza"/>
        <img class="slider_image" src="img/share/recipes/pizza.jpg" alt="Pizza"/>
        <img class="slider_image" src="img/share/recipes/pizza.jpg" alt="Pizza"/>
        <img class="slider_image" src="img/share/recipes/pizza.jpg" alt="Pizza"/>
        <img class="slider_image" src="img/share/recipes/pizza.jpg" alt="Pizza"/>
    </div> <!--images show through the slider mask, and should be floated left (or inline-block). Currently can't be side by side without specifying width of slider_images-->
    <img class="slider_mask" alt="Slider Mask" src="img/share_recipe_mask.png"/><!--sits on top of slider images -->
    <h4>Semolina <br/>Olive Oil Cake</h4> <!--sits on top of slider mask-->
</div>

.slider_box {
    width:190px; height:220px; position: absolute; overflow: hidden;
    .slider_images {
        position: absolute; bottom: 0;
        img { float: none; width: 190px; height:158px; }
    }
    .slider_mask { position: absolute; }
    h4 { .cubano; font-size:1.8em; position: absolute; color: #fff; top:11px; left:14px; line-height: 110%; }
}

CSS

.slider_box {
    width:190px; height:220px; position: absolute; overflow: hidden;
    .slider_images {
        position: absolute; bottom: 0;
        img { float: none; width: 190px; height:158px; }
    }
    .slider_mask { position: absolute; }
    h4 { .cubano; font-size:1.8em; position: absolute; color: #fff; top:11px; left:14px; line-height: 110%; }
}
.slider_nav {
    .slider_nav_btn { width:10px; height:10px; display:inline-block; .border-radius(50%,50%,50%,50%); color: #f3895f; }
    .slider_nav_btn:hover { color: @redDk; }
}

【问题讨论】:

    标签: html css slider css-float


    【解决方案1】:

    如果我掌握的情况正确,你需要容器​​是口罩的大小,对吧?

    使用一点 Javascript:

    <div class="slider_box" id="easyID">
    <!-- snip -->
    <img class="slider_mask" id="easytoidentify" src="whatever" />
    <script type="text/javascript">
      document.getElementById('easyID').style.width = document.getElementById('easytoidentify').width;
    </script>
    

    从那里,您只需将overflow:hidden 添加到“slider_box”css 并定义“slider_images”的宽度,使其足够宽。只要启用了 Javascript,它就可以工作。

    【讨论】:

    • container 需要是它包含的图像的大小,我正在尝试不使用 javascript。
    • 当你说“它包含的图像的大小”时,你的意思是什么? “slider_image”图像的大小是否与“slider_mask”不同?您是否希望容器足够大以并排放置所有“slider_image”?请说清楚。
    • 另外,您将这些页面作为静态 HTML 提供还是使用服务器端脚本语言?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 2016-02-24
    • 2017-12-25
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    相关资源
    最近更新 更多