CSS实现文本周围插入符号

CSS实现文本周围插入符号的方案

本文要讨论的是如何在文本的周围插入图标,怎么样控制它们之间的位置关系,通过HTML结构合理性与CSS属性的使用来比较不同方案所实现效果的优缺点。

常见设计稿要求

  • 在文本前、后、上、下插入图标、线条、三角形、圆形
  • 插入的元素要和文本实现间距、对齐(居中、顶部、基线)等位置关系。

理伦知识

  • 灵活使用display、background、z-index等属性
  • 通过
    :before
    :after
    配合content属性来实现插入内容。
  • 通过absolute、vertical、margin、padding、line-height等属性实现文本与符号位置关系。
  • 能够使用CSS属性画出的图形则用CSS属性,否则用background属性显示背景图片
  • 兼容性:content(IE8 )、伪元素(IE8 ),因此如果要考虑兼容性的话,直接对元素设置background背景图片比 content插入元素更好。

实践操作

  • 解法一:改变HTML结构,通过在文本元素前或后增加标签如
    <span></span>
    <i></i>
  • 解法二:直接对元素使用伪元素:before和:after(Ie7以下不支持)
    • 必须有content属性
    • 插入的元素的是内联元素,需要显示地定义为块级元素,才能设置高度,填充,边距等
  • 解法三:将定制的符号作为背景加在父容器上,并通过内边距为符号留出所需空间。

线条


html
<div class="article-block-title"><h2 class="title"><span>前端技术</span><i>前端技术前端技术</i></h2>
</div>
css
.article-block-title {height: 44px;padding-left: 20px;border-left: 3px solid #72b16a;/*实现文本与竖线对齐*/line-height: 44px;   
}
分析
  • 直接利用该文本的容器使用border-left、border-right、border-top、border-bottom可以分别实现只显示文本上、下、左、右的线条。
  • 对于inline,inline-block等,可使用line-height实现文本与竖线的居中。

html
<p class="text-info"><i class="line line-left"></i>resto restaurant home page website template<i class="line line-right"></i>
</p>
css
.text-info .line {display: inline-block;width: 40px;border-top: 1px solid #fff;/*使横线居中*/vertical-align: middle;/*for IE7*/*margin-top: 22px;
}
分析
  • 在文本前后添加
    i
    span
    标签相对使用伪元素:before和:after更加清晰明了。
  • vertical-align:middle实现线与文本垂直居中。
    • 该属性在ie7中失效
    • 可使用margin-top实现(前提知道parent-element高度)

三角形


html
<div class="menu-tips">The menu</div>
css
.menu-tips:after {position: absolute;left: 0;bottom: 0;content: "";width: 0;height: 0;/*menu是156px宽,所以这里设置78px*/border-left: 78px solid transparent;border-right: 78px solid transparent;border-bottom: 10px solid #fff;
}
分析
  • 通过transparent属性配合border实现三角形。
  • 注意的是,我们可以使用position属性使:before和:after插入到任意位置,不仅仅是“前”或“后”。可以实现右图的线条位于文字“成为我们的志愿者”的正下边。

圆形

html
<div class="btn-group"><a href="" class="btn"></a><a href="" class="btn active"></a><a href="" class="btn"></a><a href="" class="btn"></a>
</div>
css
.index-panel-header .btn-group {float: right;/*清除行内元素的4px空白间距*/font-size: 0;
}.index-panel-header .btn {display: inline-block;margin-left: 11px;width: 9px;height: 9px;background: #dedede;/*画圆*/-moz-border-radius: 5px; /* Firefox */-webkit-border-radius: 5px; /* Safari 和 Chrome  */border-radius:5px; /* Opera 10.5 , 以及使用了IE-CSS3的IE浏览器 *//*for ie7、8*/position: relative;z-index:2;behavior: url(../ie-css3.htc); /* 通知IE浏览器调用脚本作用于'btn'类 */
}
分析
  • 这里是banner轮播图等需求的做法,因为是连续的按钮,只要利用border-radius的属性画出圆形。
  • border-radius在IE8以下无法使用,需要强制
    • Trick1:用图片background替代
    • Trick2:调用脚本 ie-css3.htc,使IE浏览器支持css3属性。
      1. 当前元素一定要有定位属性,像是position:relative或是position:absolute属性。
      2. z-index值一定要比周围元素的要高

使用CSS Entities

html
<ul class="breadcrumb-list clearfix"><li class="list-item"><a href="" class="item-txt-link">C站</a></li><li class="list-item"><a href="" class="item-txt-link">个人报表</a></li><li class="list-item"><a href="" class="item-txt-link">文件一</a></li><li class="list-item"><a href="" class="item-txt-link">文档一</a></li>
</ul>
css
.breadcrumb-list .list-item   .list-item:before {padding-left: 4px;padding-right: 4px;color: #b3b3b3;content: "/\00a0";
}
分析
  • 其中的斜杠(/)符号,即使用
    content: "/\00a0"
    生成,更多符号请看CSS Entities

自定义图标

html
<div class="star-bar"><span class="star"></span><span class="star"></span><span class="star"></span><span class="star"></span><span class="star nostar"></span>
</div>
css
.star-bar {font-size: 0px;
}.star {display: inline-block;width: 10px;height: 10px;margin-right: 5px;background: url("../images/index-star.png") no-repeat;
}.nostar {background-position: 0 -10px;
}
分析
  • 这里是一些评分等需求的做法,利用background的属性显示图片。

顶部搜索栏

html
    <ul class="header-nav"><li class="item"><!--<span class="icon-search"></span>--><form action=""><input class="search-input" type="text"></form></li><li class="item"><a class="user-login" href="">登录</a></li></ul>
css
/*法一加入indicator*/   
.header-nav .icon-search {position: absolute;top: 50%;left: 17px;z-index: 1;display: inline-block;width: 17px;height: 17px;margin-top: -8px;background: url(../images/icon-search.png) no-repeat;
}.header-nav .search-input {position: relative;display: inline-block;width: 312px;height: 28px;margin-right: 20px;/*padding-left: 17px;加上搜索符占的位置*/padding-left: 40px;border-radius: 20px;/*法二加入indicator,要在前面加上#fff,no-repeat等attribute*/background: #fff url(../images/icon-search.png) no-repeat 16px 50%;
}
分析
  • 法一. 因为input无法应用伪元素(原因点这里),因此需要另外加上span子元素元素来显示(需要使用position:absolute,z-index父容器position:relative)(IE9 )

  • 法二. 直接设置Input的背景background(更方便,而且直接在CSS添加)IE4
    不能直接对Input使用background,直接把Input背景覆盖掉了,需要在前面加上#fff背景颜色,后面加上no-repeat

扩展的知识

  • 如何居中元素
  • 网页中插入图像

总结

  • 如果是连续多个图标符号,则使用HTML标签表示。
  • 如果是插入单个符号的话,在不考虑兼容性的情况下,使用伪元素 > 额外添加HTML标签。
  • 对于状态类图标,则使用background-image。

参考资料

  • 学习使用:before和:after伪元素
  • The Shapes of CSS
  • css3画圆、css3画半圆、css3画空心圆和css3画四分之一圆
  • 让IE6/IE7/IE8浏览器支持CSS3属性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368870.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql动态sql是什么,mysql中动态sql的一次实际应用

一、前言本次实际应用中&#xff0c;使用到了如下几个要点&#xff1a;mysql的动态建表;mysql的多表插入;mysql的多表更新;mysql的多表删除;二、使用场景2.1 动态建表要求建立多个表&#xff0c;例如电压、电流等表&#xff0c;这些表的字段是完全一样的&#xff0c;只有表名不…

layer绑定回车事件(转)

条件&#xff1a;弹窗后不做任何点击操作或者聚焦操作对于layer.load&#xff0c;弹出后反复按回车&#xff0c;load层将不断刷新&#xff0c;即使设置了自动消失也只有等不按回车键才会生效。对于layer iframe层有表单就更糟糕了&#xff0c;每按一次回车&#xff0c;iframe表…

Spring MVC会话教程

会话管理是每个Web应用程序必不可少的部分。 由于Spring MVC是用于Web开发的功能强大的框架&#xff0c;因此它具有自己的工具和API与会话进行交互。 今天&#xff0c;我打算向您展示Spring MVC应用程序中会话处理的基本方法。 这意味着处理表单&#xff0c;将对象添加到会话中…

height百分比以及高度自适应问题

1. 你曾经是否说想要 高度占页面或者占div百分比无效的问题&#xff0c;相信你也搜索过了&#xff0c;就是说 需要 设置父亲父亲一直到祖宗html都要设置百分比&#xff0c;才有效果。 总之一句话&#xff1a;想用百分比设置他的高度&#xff0c;则它的父亲中至少有一个是固定高…

程序媛,坚持这几个好习惯让你越来越美

身边做编程的女孩子越来越多&#xff0c;她们不仅上得厅堂下得厨房&#xff0c;改的了bug&#xff0c;杀得了木马&#xff0c;关键还能一天二十四小时除了睡觉都与电脑过招&#xff0c;但是每天对着电脑的辐射&#xff0c;熬夜加班敲代码的时候&#xff0c;皮肤也会变得越来越差…

发布Disruptor 3.0.0

我决定对整个版本的Disruptor放置beta标签感到有点无聊&#xff0c;所以决定将Disruptor 3.0.0发行到全世界。 此版本的最大挑战是清理代码并提出一种更好的算法来处理多个生产者。 如果我很幸运&#xff0c;可以更快。 最初&#xff0c;在此版本中&#xff0c;我走了几个阴暗的…

matlab 7 安装序列号,Matlab7序列号

Matlab7.0序列号1&#xff1a;14-13299-56369-16360-32789-51027-35530-39910-50517-56079-43171-43696-14148-64597-46518-35191-10070-58980-25665-36629-51033-46438-01127-52395-28569-20030-38795-14563-11876-23292-58825-37547-05827-26397Matlab7.0序列号2&#xff1a;…

如何运行开源的安卓项目?

第一步:进入github开源安卓项目中&#xff0c;点击clone 第二步&#xff1a;打开android studio&#xff0c;选择checkout从Git中迁出项目 将github的地址复制进去 第三步&#xff1a;系统会自动下载&#xff0c;加载一段时间。然后出现下面的就算是结束了。 最后&#xff0c;运…

命名规范

前面的话 由历史原因及个人习惯引起的 DOM 结构、命名不统一&#xff0c;导致不同成员在维护同一页面时&#xff0c;效率低下&#xff0c;迭代、维护成本极高。所以&#xff0c;使用统一的命名规范非常必要。本文将详细介绍命名规范 目录命名 1、项目文件夹&#xff1a;project…

fis pure开发php,50个精品网站鉴赏

50个精品网站鉴赏介绍给大家的是几千个世界优秀网站中的精中之精的作品&#xff0c;都有非常不错的创意&#xff0c;推荐给众多网站的设计人员&#xff0c;好好借鉴一下别人是怎么设计网站的。这些网站主要的制作工具为FLASH&#xff0c;因为它有较好、较强的动态效果&#xff…

js实现一键复制

方法一&#xff1a; 使用插件 引入clipboard.js 使用如下 <script>copyFn function() {var clipboard new Clipboard(.copy-btn, {text: function(trigger) {return $(.copy-txt).text();}});clipboard.on(success, function() {alert(复制成功&#xff01;);});clipbo…

Maven的Spring Security

1.概述 本文将说明如何使用Maven设置Spring Security&#xff0c;并介绍使用Spring Security依赖项的特定用例。 最新的Spring Security版本可以在Maven Central上找到。 这是上一篇有关Maven的Spring的后续文章 &#xff0c;因此对于非安全性Spring依赖项&#xff0c;这是开始…

(转)Babel-现在开始使用 ES6

在 2 月 20 号 ECMAScript 第六版就正式推出了&#xff0c;这门语言一直保持稳定快速的发展而且新功能也在慢慢被现在主流的 JavaScript 引擎所接受。不过要想在浏览器端或者 Node 端直接运行 ES6 代码还得等上一些日子。幸好 TC39 (负责研究开发 EMCAScript 规格的组织) 做了大…

微信公众平台——被动回复用户消息

微信公众平台——被动回复用户消息 开发模式下的回复信息基础接口&#xff0c;可用来向用户回复文本消息、图片消息、语音消息、视频消息、小视频消息、地理位置消息、链接消息。 1、回复文本消息 function ReplyText(Msg: TMessage; MsgText: String): RawByteString; varX: I…

Java EE CDI bean范围

Java EE平台的上下文和依赖注入&#xff08;CDI&#xff09;是一项功能&#xff0c;可帮助将Java EE平台的Web层和事务层绑定在一起。 CDI是一组服务&#xff0c;可以一起使用&#xff0c;使开发人员可以轻松地在Web应用程序中使用企业bean和JavaServer Faces技术。 在CDI中&a…

利用shell脚本进行代码备份和数据库备份

1、实际并不是进行代码备份&#xff0c;而是对上传的附件备份&#xff0c; 毕竟代码在我这边主要是通过svn管控的&#xff0c;不需要进行备份了&#xff0c;但是为了偷懒&#xff0c;还是将整个文件夹直接打包了。 name"your code file name" #你代码文件夹的名称# t…

php强类型 vscode,VSCode + WSL 2 + Ruby环境搭建图文详解

vscode配置ruby开发环境vscode近年来发展迅速&#xff0c;几乎在3年之间就抢占了原来vim、sublime text的很多份额&#xff0c;犹记得在2015-2016年的时候&#xff0c;ruby推荐的开发环境基本上都是vim和sublime text&#xff0c;然而&#xff0c;随着vscode的发展&#xff0c;…

关于网页导航栏制作的几种方法与常见问题解决(新人向)

无序列表是html页面排版经常用到的非常实用的标签&#xff0c;但是新手在使用无序列表时&#xff0c;经常会在横向排版上出现问题&#xff0c;笔者在这里提供了笔者在使用无序列表制作网页导航栏时的几种方法与常见问题的解决问题。&#xff08;以css内部样式为例&#xff09; …

JPA – Querydsl投影

在我的上一篇文章中&#xff1a; JPA –基本投影 –我已经提到了构建JPA投影的两种基本可能性。 这篇文章为您带来了更多示例&#xff0c;这次基于Querydsl框架。 注意&#xff0c;这里我指的是Querydsl版本3.1.1。 重塑构造函数表达式 看下面的代码&#xff1a; ... import …

3n+1问题中的几个小的注意点

3038 3n1问题 时间限制: 1 s空间限制: 32000 KB题目等级 : 白银 Silver题解题目描述 Description3n1问题是一个简单有趣而又没有解决的数学问题。这个问题是由L. Collatz在1937年提出的。克拉兹问题&#xff08;Collatz problem&#xff09;也被叫做hailstone问题、3n1问题、Ha…