当前位置: 首页 > news >正文

CSS3 聊天气泡框以及 inherit、currentColor 关键字

聊天气泡框
效果如上图所示,主要用到CSS3的伪类::after::before,以及圆角边框border-radius属性。对于下面的气泡框,可以有两种方式实现小三角:

  • 传统方式,利用CSS画小三角,利用到了透明背景和边框属性transparent的应用。

  • CSS3的transform属性的使用

然后通过position定位到合适的位置。

此外,本文还会讲一下CSS的inherit属性值的知识。

实现气泡框

HTML结果也很简单,就一个DIV。下三角部分使用了CSS画三角的知识,
HTML:

<div class="message1">
    Demos 代码演示、代码片段 - 读你,欢迎来到读你,http://dunizb.com
</div>
 
<div class="message2">
    Demos 代码演示、代码片段 - 读你,欢迎来到读你,http://dunizb.com
</div>

CSS:

.message1,.message2 {
    width: 200px;
    height: 80px;
    margin: 100px auto;
    background-color: green;
    border-bottom-color:green;/*为了给after伪元素自动继承*/
    color: #fff;
    font-size: 12px;
    font-family: Arial;
    line-height: 18px;
    padding: 5px 12px 5px 12px;
    box-sizing: border-box;
    border-radius: 6px;
    position: relative;
    word-break: break-all;
}
.message1::after {
    content: '';
    position: absolute;
    top: 0;
    right: -24px;
    width: 20px;
    height: 20px;
    border-width: 0 0 20px 20px;
    border-style: solid;
    border-bottom-color: inherit;   /*自动继承父元素的border-bottom-color*/
    border-left-color: transparent;
    border-radius: 0 0 60px 0;
}
/** 通过对小正方形旋转45度解决 **/
.message2::before {
    content: '';
    position: absolute;
    top: 50%;
    left: -5px;
    width: 10px;
    height: 10px;
    margin-top: -10px;
    background: inherit;/*自动继承父元素的背景*/
    transform: rotate(45deg);
}

/** 通过画三角形解决 */
/*.message2::before {*/
    /*content: '';*/
    /*position: absolute;*/
    /*top: 50%;*/
    /*left: -20px;*/
    /*width: 0px;*/
    /*height: 0px;*/
    /*margin-top: -10px;*/
    /*border-width: 10px;*/
    /*border-style: solid;*/
    /*border-color: transparent green transparent transparent;*/
/*}*/

以上就是全部代码。
上面对小正方形使用了inherit属性值,通过把正方形旋转45度形成对外的三角而得到。

被刻意遗忘的inherit关键字

尽管绝大多数人都知道inherit这个关键字,但是很多人可能自始自终都没实际用过它,包括我自己,从来没有,在查询CSS文档时,习惯性的忽略它,直到看到《CSS揭秘》这本书。

inherit可以用在任何CSS属性中,这从w3cschool文档中就已经体现了,它总是绑定到父元素的计算值(对伪元素来说,则会取生成该伪元素的宿主元素)。举例来说,要把表单元素的字体设定为与页面的其他部分相同,你并不需要重复指定字体属性,只需要利用inherit的特性即可:

input,select,button { font: inherit }

与此类似,要把超链接的颜色设定为与页面中其他文本相同,还是要用inherir,比如下面的代码:
HTML:


<div class="article">
    <p>Demos 代码演示、代码片段 - 读你 | 这世间唯有梦想和好姑娘不可辜负!</p>
    <a href="http://dunizb.com/demo/">Demos</a>
</div>

CSS:

.article {
      font-family: "Microsoft YaHei";
      font-size: 14px;
      color: red;
}

效果:
2.png
此时文字的颜色是红色,而超链接默认是蓝色,并不会被改变,这是我们都知道的,那么我想让超链接也是跟父元素一样的红色呢?此时我们只需要给超链接inherit即可:

.article a { color: inherit; }

效果:
3.png
这个inherit对于背景色相同非常有用,但是需要注意的是,想要子元素设置属性的inherit关键字生效,父元素必须设置过使用inherit为值的属性。

CSS3的currentColor关键字

与之类似的还有一个新的CSS颜色属性:currentColor。这个属性是在CSS颜色(第三版)规范中新增加的,它是从SVG那里借鉴过来的,这个关键字并没有绑定到一个固定的颜色值,而是一直被解析为color。实际上,这是CSS中有史以来第一个变量,虽然功能很有限,但它真的是个变量。

举个例子,假如我们想让所有的水平分割线(所有<hr>元素)自动与文本颜色保持一致。

例如在上面的例子中添加水平线:

.article hr {
      height: .5em;
}

默认情况下是这样的:
4.png
 此时,添加 currentColor

.article hr {
      height: .5em;
      background: currentColor;
}

效果:
5.png
当我在把文字颜色设为蓝色的时候,它们会保持跟文字颜色一致

更多CSS3边框特效,请查看该页面
 


参考资料:
《CSS解密》[美]Lea Verou (作者) ,[中]CSS魔法 (译者),图灵教育,人民有点出版社

相关文章:

  • 你不一定知道的几个前端小知识
  • linux red hat 安装svn
  • D1-FFmpeg拼接视频
  • JAVA 实现 基于RSA算法的签名验签
  • JS之路——字符串函数
  • [转] 常用SQL查询语句
  • WINDOWS下调用GetTokenInformation的奇怪之处--两次调用
  • 修改windows的语言
  • ReactNativeweexDeviceOne对比
  • jquery去重
  • 码农看天下
  • nfs/samba相关
  • 定时(隔一段时间)提交ajax更新未读消息
  • 【案例】主从替换之后的复制风暴
  • redis密码管理
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Java-详解HashMap
  • Java新版本的开发已正式进入轨道,版本号18.3
  • KMP算法及优化
  • nodejs实现webservice问题总结
  • node入门
  • python 装饰器(一)
  • Sass 快速入门教程
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • tweak 支持第三方库
  • vue学习系列(二)vue-cli
  • 简析gRPC client 连接管理
  • 前端面试总结(at, md)
  • 我感觉这是史上最牛的防sql注入方法类
  • 线上 python http server profile 实践
  • 原生Ajax
  • 最近的计划
  • const的用法,特别是用在函数前面与后面的区别
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 树莓派用上kodexplorer也能玩成私有网盘
  • #微信小程序(布局、渲染层基础知识)
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (编译到47%失败)to be deleted
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (离散数学)逻辑连接词
  • (三) diretfbrc详解
  • (四)图像的%2线性拉伸
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • ./和../以及/和~之间的区别
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET Remoting学习笔记(三)信道