2

我是后端编码员,我是前端开发的新手,但我现在有空闲时间,我想尝试学习 HTML / CSS 的基础知识 :)

这些图片描述了我的问题:

我有以下。左侧为简单信息,右侧为标题。 第一张截图

但如果标题很长,我的标记就会变差: 错误的标记

我想实现这个(油漆): 正确的标记

换句话说,如果标题太长,我想增加主(灰色)块的高度并将其内容垂直居中。

这是我的代码:

<div class="header"> <!-- Main (gray) block -->
    <div class="author">
        <div class="left">
            <img src="http://cs421319.vk.me/v421319968/b0e1/ljfuXCyMOFI.jpg" width="50" height="50"/>
        </div>
        <div class="author_details">
            <span class="name">_Dark_</span>
            <br>
            <span class="time">01.01.2014 — 23:59 </span>
        </div>
    </div>
    <div class="title">
        <h1>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse sollicitudin, est non tempus lacinia, urna. </h1>
    </div>
</div>

少:

.header {
    min-height: 60px;
    background-color: #EEE;
    padding: 5px;
    -moz-box-sizing: border-box;
    box-sizing: border-box;

  .title {
    display: inline-block;
    vertical-align: top;
  }

  h1 {
    font-weight: normal;
    font-size: 24px;
    margin: 0;
  }

  .author {
    max-width: 200px;
    display: inline-block;
    border-right: 1px solid #CCC;
  }

  .author_details {
    margin: 0 0 0 55px;
    padding: 0 5px 0 0;

    .name {
        font-size: 20px;
        font-weight: bold;
    }

    .time {
        font-size: 12px;
    }
  }
}

对不起,如果我把我的问题解释得不好,但我真的不知道该怎么做,我想要一些关于我的(可能是丑陋的)代码的建议:)

这是带有当前标记的 JSFiddle

4

2 回答 2

3

你的标记太密集了。看这里做一个更简单的标记:http: //jsfiddle.net/hdqvY/8/

请记住几件事。如果您可以将事物组合在一起,则可以更轻松地在页面中放置项目。那一小块信息包含在一个区域中,而您的文本(段落)可以包含在另一个区域中。让盒子排列起来很容易:只需使用 display:inline-block; 和浮动:左;让他们排队。但请记住周围容器的宽度以及里面的盒子,以便它们匹配。

HTML

<div class="container">
    <div class="box">//Main (gray)block<br>
       <img src="http://cs421319.vk.me/v421319968/b0e1/ljfuXCyMOFI.jpg" width="50" height="50"/><br>
        _Dark_<br>
        01.01.2014-23:59
    </div>
    <div class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse sollicitudin, est non tempus lacinia, urna. 
    </div>

</div>

CSS

.container{
    width:800px;
    height:100%;
    display:inline-block;
}
.box{
    width:140px;
    height:300px;
    display:inline-block;
    float:left;
}

.text{
    font-family:arial;
    font-size:14px;
    display:inline-block;
    width:400px;
    text-wrap:none;
    float:left;
}
于 2013-10-09T13:54:06.203 回答
3

您的代码(HTML)没问题,但可以更简化,元素更少:

<div class="infoBox">
    <p>
        <img src="http://cs421319.vk.me/v421319968/b0e1/ljfuXCyMOFI.jpg" />
        _Dark_<br />
        <span>01.01.2014 — 23:59 </span>
    </p>
    <h1>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse sollicitudin, est non tempus lacinia, urna. </h1>
</div>

有了这个 CSS(添加了一些注释来解释一些事情的作用)。

.infoBox {
    min-height: 60px;
    background: #eee;
    padding: 5px;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    display: table; /* display the box as table */
    width: 100%;
}
.infoBox > p, /* selects all p that are direct child of .infoBox */
.infoBox > h1 {
    display: table-cell; /* display the p and h1 as a table cell */
}
.infoBox > p {
    width: 200px;
    margin: 0;
    padding: 0;
    font-size: 20px;
    font-weight: bold;
}
.infoBox > p img {
    width: 50px;
    height: 50px;
    margin-right: 5px;
    float: left;
}
.infoBox > p span {
    font-size: 12px;
    font-weight: normal;
}
.infoBox > h1 { /* select h1 that is a direct child of .infoBox */
    font-size: 14px;
    margin: 0;
    padding: 0;
}

还要检查这个演示

于 2013-10-09T13:57:08.477 回答