0

甚至不确定这是否可能,但我想我会问。我已经搜索并尝试了许多“解决方案”,但没有找到我想要的东西。

容器是 940 宽 x 100 高。我想在其右侧包含多行文本的图像。这两者作为一个整体应该在 940x100 内水平和垂直居中。我不会有图像或文本的宽度,因为这会改变 - 特别是因为我在滑块中使用它。

虽然我可以在内部容器上使用顶部边距/填充来“模仿”它,但我希望有一些确定的东西,而不是对边距/填充的猜测。

我将它与 flexslider 一起使用,这就是格式如下的原因。

    <div id="awards">
        <div class="flexslider">
            <ul class="slides">
                <li>    
                    img - multiple lines of text
                </li>
            </ul>
        </div>
    </div>


#awards .flexslider{
height:100px;
text-align:center;
width:940px;
margin:0 auto;
border:1px #dedede solid;
background:#f1f1f1;
-moz-border-radius: 6px;
-webkit-border-radius: 6px;
border-radius: 6px;
}

编辑:除了它使用基于表格的布局之外,这完全符合我的要求:

    <div id="awards">
        <div class="flexslider">
            <ul class="slides">
                <li>
                    <table>
                        <tr>
                            <td style="width:150px"><img alt="" height="24" src="/images/logo.png" width="150"></td>
                            <td>This is a test of the comment section and if I make this larger and larger?<br />test.com</td>
                        </tr>
                    </table>            
                </li>
            </ul>
        </div>
    </div>

#awards .flexslider{
color:#222222;
height:100px;
width:940px;
margin:0 auto;
border:1px #dedede solid;
background:#ffffff url('/images/bg_diag.png') repeat;
-moz-border-radius: 8px;
-webkit-border-radius: 8px;
border-radius: 8px;
}

#awards table{
width:auto;
height:100px;
margin:0 auto;
}

#awards table img{
margin-right:30px;
}

#awards table td{
height:100px;
vertical-align:middle;
}
4

2 回答 2

0

试试这个(原始的编辑版本):

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">

<style media="all">

#awards {
    width:940px;
    padding: 20px 0;
    margin:0 auto;
    border:1px #dedede solid;
    background:#f1f1f1;
    -moz-border-radius: 6px;
    -webkit-border-radius: 6px;
    border-radius: 6px;
}

#awards .flexslider{
    display: table;
    table-layout: fixed;
    margin: 0 auto;
    height: 100%;
}

.flexslider ul {
    list-style: none; 
    padding-left: 20px;
}

.flexslider ul, .flexslider .img {
    display: table-cell; 
    vertical-align: middle;
}

.img img {
    vertical-align: bottom; 
}


</style>

</head>
<body>
    <div id="awards">
        <div class="flexslider">

            <div class="img">
                <img src="image.gif">
            </div>

            <ul class="slides">
                <li>multiple lines of text</li>
                <li>multiple lines of text </li>
                <li>multiple lines of text</li>
            </ul>
        </div>
    </div>
</body>
</html>

编辑:(新版本适合 flexslider 设置)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">

<style media="all">

#awards {
    width:940px;
    padding: 20px 0;
    margin:0 auto;
    border:1px #dedede solid;
    background:#f1f1f1;
    -moz-border-radius: 6px;
    -webkit-border-radius: 6px;
    border-radius: 6px;
}

ul.slides  {
    list-style: none; 
    margin: 0; padding: 0;
}

.slides li {
    display: table;
    table-layout: fixed;
    margin: 0 auto;
    height: 100%;
}

.text {
    padding-left: 20px;
}

.text, .img {
    display: table-cell; 
    vertical-align: middle;
}

.img img {
    vertical-align: bottom; 
}


</style>

</head>
<body>
    <div id="awards">
        <div class="flexslider">
            <ul class="slides">
                <li>
                    <div class="img">
                        <img src="image.gif">
                    </div>
                    <div class="text">
                        <p>multiple lines of text<br>
                        multiple lines of text multiple lines of text multiple lines of text<br>
                        multiple lines of text</p>
                    </div>
                </li>
            </ul>
        </div>
    </div>
</body>
</html>
于 2013-05-01T03:25:18.217 回答
0

有一种方法可以在不添加额外元素的情况下做到这一点:

http://codepen.io/cimmanon/pen/seKfn

#awards .flexslider {
  height: 100px;
  text-align: center;
  width: 940px;
  margin: 0 auto;
  border: 1px #dedede solid;
  background: #f1f1f1;
  -webkit-border-radius: 6px;
  -moz-border-radius: 6px;
  -ms-border-radius: 6px;
  -o-border-radius: 6px;
  border-radius: 6px;
}

ul.slides li {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-pack: center;
  -moz-box-pack: center;
  -ms-flex-pack: center;
  -webkit-justify-content: center;
  justify-content: center;
  -webkit-box-align: center;
  -moz-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
  height: 100px;
  /* any width will do, fix for old Firefox */
  width: 100%;
}

ul.slides img {
  /* fallback for IE<10, hide from Safari */
  float: left;
}

ul.slides p {
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
/* optional
  -webkit-flex: 1 auto;
  -ms-flex: 1 auto;
  flex: 1 auto;
*/
}

<div id="awards">
    <div class="flexslider">
        <ul class="slides">
            <li>
                <img src="http://placekitten.com/100/50" />
                <p>Lorem ipsum dolor sit amet...</p>
            </li>
            <li>
                <img src="http://placekitten.com/100/50" />
                <p>Lorem ipsum dolor sit amet...</p>
            </li>
        </ul>
    </div>
</div>

这几乎适用于 IE<10 以外的所有内容。我为旧版浏览器提供了一个后备方案,但它需要从 Safari 中隐藏。

于 2013-05-01T14:24:09.823 回答