文字溢出隐藏

如果你观察过浮动元素,你会发现这样一个事实,当前一个元素将宽度占满以后,后一个元素就会往下掉,如下所示

代码如下

<style>
div,p{
margin:0;
}
#box{
width: 100px;
height: 20px;
border: 1px solid red;
}
#box .content{
float:left;
height: 100%;
margin-right: 20px;
}
</style>
<div id="box">
<p class="content">CSS</p>
<p>乐趣</p>
</div>

也许在你眼里这是个再正常不过的现象,不过有人却将这个现象用在了实现文本溢出隐藏上,我们来看看他们是怎么实现的。

    <style>
div,p{
margin:0;
}
#box{
width: 100px;
height: 20px;
border: 1px solid red;
}
#box p:first-child{
float:left;
height: 100%;
padding-right: 1em;
word-break:break-all;
overflow:hidden;
}
#box p:last-child{
position:relative;
top:-20px;
text-align:right;
}
</style>
<div id="box">
<p>CSS</p>
<p>...</p>
</div>

先来看看它的效果,如下

实现这个效果的原理就是先将省略号通过相对定位移动到box的上方,当第一个元素p的内容超过box元素的宽度时,第二个p元素就会掉下来(一行的高度),如果只想让...在第一个p元素内容超出时才显示,我们可以给box元素加上overflow:hidden;即可。

也不一定得用浮动,两个块元素也是没有问题滴,前一个内容越多后一个元素就越往后,不多说上例子。

    <style>
div,p{
margin:0;
}
#box{
width: 100px;
height: 20px;
border: 1px solid red;
}
#box p:first-child{
max-height: 40px;
padding-right: 1em;
word-break: break-all;
overflow: hidden;
}
#box p:last-child{
position: relative;
top: -44px;
text-align: right;
}
</style>
<div id="box">
<p>CSS</p>
<p>...</p>
</div>

这里比之前写的代码多了一行max-height: 40px;之所以这样做是因为我们希望第一个p元素的内容超出才显示第二个元素,而第二个元素是在当第一个元素的宽超出box才会被显示,而只有当第一个p元素2行的时候才算超出,另外这里不用height也是有原因的,如果设置的是height,那么高度就被固定了,如果高度都固定了,显然就不可能去影响第二个p元素。

一行居中,多行居左

需要做到1行居中,多行居左,其实也很简单,我们知道每个元素都可以独自设置自己的文本对齐方式,假如我们将HTML结构写成下面这样

<div id="box">
<p>CSS乐趣</p>
</div>

我们知道父元素是可以控制子元素的对齐方式的,我们先将box的text-align设置成center,再将p元素的text-align设置成left,经管如此设置,结果还是不行的。

<style>
div,p{
margin:0;
}
#box{
width:100px;
border:1px solid red;
text-align:center;
}
#box p{
text-align:left;
}
</style>

结果如下

可以看到p元素,显示的是左对齐,并没有被居中,其原因在于p元素的宽是占满box元素的,这也是块元素的一个特点,假如我们将p元素的display改成inline或者inline-block,p元素就居中了,如下

我们将内容加到两行看看

很显然这不是我们所希望看到的,之所以p元素设置的text-align:left;没有起作用,是因为此时p元素是行内元素,它的宽度是随着内容自适应的,所以永远都不可能多出空间来,既然没有多出的空间,自然就不可能有对齐方式,因为内容就占满了整个空间,虽然行内元素做不到,但是行内块则是可以的,如下

行内块元素的宽虽然是根据内容来的,但和行内元素不同的是,行内块元素的的每一行行宽都已经确定了的(最宽的行宽),所以行内块在内容没有占满的情况下,是可以设置文字的对齐方式的。

我从现象中学到的CSS的更多相关文章

  1. 透过现象看webpack处理css文件中图片路径转换的具体过程

    webpack是目前使用比较流行的一个前端模块打包器,前端的任何资源都被当成一个模块来处理,如图片.css文件等等.在基于webpack构建的前端项目中,一般都会配置有关css文件处理的规则,这其中也 ...

  2. CSS十问——好奇心+刨根问底=CSSer

    最近有时间,想把酝酿的几篇博客都写出来,今天前端小学生带着10个问题,跟大家分享一下学习CSS的一些体会,我觉得想学好CSS,必须保持一颗好奇心和刨根问底的劲头,而不是复制粘贴,得过且过.本人能力有限 ...

  3. DIV+CSS系统学习:转载

    第一部分 HTML 第一章 职业规划和前景 职业方向规划定位: web前端开发工程师 web网站架构师 自己创业 转岗管理或其他 web前端开发的前景展望: 未来IT行业企业需求最多的人才 结合最新的 ...

  4. CSS十问——好奇心+刨根问底=CSSer (转)

    最近有时间,想把酝酿的几篇博客都写出来,今天前端小学生带着10个问题,跟大家分享一下学习CSS的一些体会,我觉得想学好CSS,必须保持一颗好奇心和刨根问底的劲头,而不是复制粘贴,得过且过.本人能力有限 ...

  5. CSS十问

    CSS十问——好奇心+刨根问底=CSSer   最近有时间,想把酝酿的几篇博客都写出来,今天前端小学生带着10个问题,跟大家分享一下学习CSS的一些体会,我觉得想学好CSS,必须保持一颗好奇心和刨根问 ...

  6. 【转】 CSS十问——好奇心+刨根问底=CSSer

    最近有时间,想把酝酿的几篇博客都写出来,今天前端小学生带着10个问题,跟大家分享一下学习CSS的一些体会,我觉得想学好CSS,必须保持一颗好奇心和刨根问底的劲头,而不是复制粘贴,得过且过.本人能力有限 ...

  7. css befroe after 尾类技术器

    CSS counter计数器(content目录序号自动递增)详解 这篇文章发布于 2014年08月26日,星期二,15:54,归类于 css相关. 阅读 44148 次, 今日 11 次 by zh ...

  8. python 全栈开发,Day46(列表标签,表格标签,表单标签,css的引入方式,css选择器)

    一.列表标签 列表标签分为三种. 1.无序列表<ul>,无序列表中的每一项是<li> 英文单词解释如下: ul:unordered list,“无序列表”的意思. li:lis ...

  9. CSS计数器(序列数字字符自动递增)详解———张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=4303 一.挖坟不可耻 ...

随机推荐

  1. Hibernate框架单向多对多关联映射关系

    建立单向多对多关联关系    Project.java (项目表)                private Integer proid;                private Strin ...

  2. 双系统win7和ubuntu14.04进入了grub rescue>

    可以跳过的废话:最近在学习caffe,需要在linux下安装cuda,sudo apt-get install cuda后,出现了由于根目录/空间不足而失败的情况. 于是想把win7下80G的一个盘格 ...

  3. 道路修建 2(自创题+题解)(From NOI2011)

    道路修建这道题想来各位不陌生(传送门在此——Bzoj2435),看了此题,一开始以为是最初各个点处于分散状态,然后做了一下,直到发现标程都有点问题,才发现原题是说本来各点已经处于连接完毕的状态(phi ...

  4. linux命令分块总结---多操作才是真理

    ps:其实学习linux系统,多多联系我们现在使用的Windows系统,这样就可以事半功倍的学习: 一. 启动,关机,登入,登出相关命令 [login]: 登录 [logout] :登出 [shutd ...

  5. Ionic android 底部tabs

    ionic android tabs 默认显示在上部,如果要跟苹果一起统一在底部,那么可以在app.js添加配置 .config(function($ionicConfigProvider) { $i ...

  6. idea调试SpringMvc, 出现:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener错误的解决办法

    有时,使用idea开发SpringMvc发现调试时出现以下错误: 12-Mar-2017 12:08:02.345 严重 [RMI TCP Connection(2)-127.0.0.1] org.a ...

  7. Spring报错——Scope 'session' is not active for the current thread

    在对程序进行了一些修改后,运行发现spring报了这个错误,这是由于我设置了一个@Scope("session")导致的,现记录下解决方法. 解决方法: 将Scope设置为scop ...

  8. python自动化框架(unnitest+selenium+htmlreport)

    上一篇零零散散的写了一些python unnitest的一些知识,这里讲讲我在实际中使用到的自动化测试框架,算是上篇记录的补充!其实我觉得:什么框架都无所谓,关键是当如果用你的框架发现了bug,能尽量 ...

  9. js中prototype,__proto__,constructor之间的关系

    首先,我们需要了解三点: 1. 只要创建一个任意新函数,就会根据一个prototype属性,该属性指向函数的原型对象: 2. 每一个原型对象都会自动获得一个constructor属性,该属性只想pro ...

  10. Android Doze模式启用和恢复

    从Android 6.0(API level 23)开始,Android提出了两个延长电池使用时间的省电特性给用户.用户管理可以在没有充电的情况下管理app的行为.当用户一段时间没有使用手机的时候,D ...