看似简单的问题其实不简单

简介: 使用CSS以后,读者会发现很多原来使用表格布局非常小儿科的问题,都变得不那么简单了。比如xiaoyh119读者希望实现一个如下的效果。 具体标题-1More 也就是在一行中,一个标题文字居左,又端放置另一个文字,以便制作一个详细内容的连接。

使用CSS以后,读者会发现很多原来使用表格布局非常小儿科的问题,都变得不那么简单了。比如xiaoyh119读者希望实现一个如下的效果。

具体标题-1More

也就是在一行中,一个标题文字居左,又端放置另一个文字,以便制作一个详细内容的连接。这样的样式,如果使用表格表格布局非常简单,只要使用一个一行两列的表格就解决了,代码如下。

1
2
3
4
5
<table>
   <tr>
      <td>具体文章标题</td><td align="right">More</td>
   </tr>
</table>

而如果使用CSS又该如何实现呢?首先我们仍顺着使用表格的思路,把左右两端的文字分别置入一个span标记中:

1
2
3
4
<h4 id="main-1">
    <span class="title">具体标题-1</span>
    <span class="more">More</span>
</h4>

那么CSS又该怎么写呢?为了能够使两个span中的文字在同一行中,因此一定要CSS中的浮动的性质来实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#main-1 {
	font-size: 12px;
	width:300px;
        margin:0 auto;
	border:1px gray solid;
}
 
#main-1 span.title{
	float:left;
}
 
#main-1 span.more{
	text-align:right;
	display:block;
}

这里首先将左边的文字设置为向左浮动,从而脱离标准流,这时它后面的文字会围绕它排列,从而使右边的“More”文字出现在同一行,但是为了使“More”文字位于最右端,就需要时这个span变为块级元素,这样它才会自动扩展,然后通过text-align:right使文字能够右对齐。

现在回头思考一下,我们上面的思路是仍然沿用了表格布局的思路进行的,那么进一步考虑一下,这个案例是否可以简化呢,实际上如果我们对HTML代码稍稍修改,就可以使CSS代码大幅度化简,首先把左右两端的文字交换一下位置:

1
2
3
<h4 id="main-1">
    <span class="more">More</span>具体标题-1
</h4>

那么CSS又该怎么写呢?为了能够使两个span中的文字在同一行中,因此一定要CSS中的浮动的性质来实现:

1
2
3
#main-1 span.more{
        float:right;
}

可以看到,这种方法,代码就比前面的方法简单了很多。因此,这里例子代码很简单,但是从中可以看出一个很有用的道理,用CSS进行页面的设计和布局,无论是一个复杂的大布局,还是一个简单的小样式,关键实现要真正把CSS的核心原理搞懂,比如这里的“盒子模型”、“标准流”、“浮动”和“定位”等基本原理,都真正理解清楚。

今天先讲到这里,后面我们还会继续沿着这里的案例继续探索和深入,更好地理解CSS的奥妙。如果对这个案例感兴趣,但是对具体原理不是很理解的读者,建议您再仔细研究一下《CSS设计彻底研究》视频教程的第1~4课。

最后,在给读者朋友一个“思考题”,这是袁马飞读者提出的问题,他希望实现如下这个效果,也就是文字要分为左中右三段,左右两端分局左右两端,中间段靠着左段,并且要求,鼠标指针经过时,相应的列表行背景变色,有兴趣的读者可以考虑一下,应该如何实现呢?能够实现IE6/IE7/Firefox都兼容吗?必须使用Javascript吗?如果使用Javascript又该怎么写呢?

目录
相关文章
|
测试技术
解决Bug应有的心态和解决方法的一些思路、方法和心得
永远要相信程序是不会骗你的,是自己在处理理逻辑中出问题,而在特定的环境中才会出现或者是自己压根就想不到情况下出现。 前几天在处理一个接口任务时,在测试环境跑是一点都没有,但在正式环境却没有将数据拉下来。没有报任何错误,一度怀疑、抱怨! 还好最后找到问题解决了!
99 0
|
5月前
|
设计模式 程序员
故意把代码写得很烂,这样的 “防御性编程“ 可取吗?
故意把代码写得很烂,这样的 “防御性编程“ 可取吗?
|
物联网 云计算
我们来这里只干一件事:种稻!
我们来这里只干一件事:种稻!
158 0
四道好题分享(看似简单,但是棘手)
四道好题分享(看似简单,但是棘手)
121 0
|
Java C语言
看似无害的代码如何搞垮系统
编程就像魔法。最近遇到一个诡异的问题:添加一段看似无害的简单代码后,系统原有功能不可用了。 ## 复现演示 jdk 8 可使用如下演示代码复现这个问题。 `TaskCenter` 是一个任务框架,可添加多个任务,随后框架将执行这些任务。 `First` 任务是新增代码,看起来简单无害,且看不出对原有任务 `Count` 有何影响,但添加 `First` 任务后,其自身执行正常,原本正常的 `C
135 0
|
存储 机器学习/深度学习 人工智能
用技术解决看似不可能的事
当前,反诈已经成为了一项全民参与的行动。在支付宝,人们给疑似诈骗账号转账时,就会在输入账号的0.1秒内接到一个电话,提醒你正在遭遇诈骗。迅速识别风险阻止诈骗发生,这背后,图计算技术发挥了至关重要的作用。
199 0
|
Web App开发 程序员
一件事:做得好,还是做得快?
前段时间读 Jeff Atwood 的一篇博客,里面有一段话说得蛮好的:“沿着那条路冲下去,一定要快,如果有什么挡住了去路,绕开它。” 这段话的弦外之音就是在说:做一件事,不要刻意追求完美、极致,而是要追求快速地迭代。 大家都知道,Google Chrome 浏览器的迭代速度非常快,截个图大家感受一下(这些都是 release 的正式版本)。版本号用了 9 位数字表示,可想而知迭代的频率有多快。
一件事:做得好,还是做得快?
|
人工智能 大数据
一个社恐的新中产,如何足不出户拥有一件定制衬衫?| 百匠大集
1981年,上海淮海路嵩山电影院屋顶,一个大型霓虹灯“双燕牌”衬衫广告牌首次通电,映亮了一片初夏傍晚的夜空。衬衫厂厂长步鑫生也在这群楼下张望着霓虹广告牌的人群中。
526 0
记一件傻事
春运过年,都要抢票回家,我也要抢票。早上醒来的时候就记得要抢票,一直到了公司还记得这事,早上8点钟开始抢票。 什么事情? 还没到8点钟呢,我想试试能不能再12306上购买,结果发现可以购买。

相关实验场景

更多