页面布局里总是会有类似 “文字 | 文字” 的设计样式,不同的浏览器存在严重偏差。

有兼容问题就要解决,下面总结了3种解决方案,分享给大家:

一.系统默认的样式

1.元素换行的段落

    <div class="txt">
<a href="">文字链接</a>
<em>|</em>
<a href="">文字链接</a>
<em>|</em>
<a href="">文字链接</a>
<em>|</em>
<a href="">文字链接</a>
<em>|</em>
<a href="">文字链接</a>
</div>

2.编写在一行的段落

    <div class="txt">
<a href="">文字链接</a><em>|</em><a href="">文字链接</a><em>|</em><a href="">文字链接</a><em>|</em><a href="">文字链接</a><em>|</em><a href="">文字链接</a>
</div>

3.有的换行有的不换行的段落

    <div class="txt">
<a href="">文字链接</a><em>|</em>
<a href="">文字链接</a><em>|</em>
<a href="">文字链接</a><em>|</em>
<a href="">文字链接</a><em>|</em>
<a href="">文字链接</a>
</div>

三段结构完全一样,只是书写格式不同的代码,在浏览器里的显示就已经开始不一样了。

二.解决方法1(inline-block元素+给符号字体)

        .box2 .txt{font-size: 0;}
.box2 .txt li{font-size: 12px;display: inline-block;*zoom:1;*display: inline;}
.box2 .txt .line{padding: 0 2px;font-family: 'Arial'}
<div class="box box2">
<h1>二.解决方法1</h1>
<h2>inline-block元素+给符号字体</h2>
<ul class="txt">
<li><a href="">文字链接</a></li>
<li class="line">|</li>
<li><a href="">文字链接</a></li>
<li class="line">|</li>
<li><a href="">文字链接</a></li>
<li class="line">|</li>
<li><a href="">文字链接</a></li>
<li class="line">|</li>
<li><a href="">文字链接</a></li>
</ul>
</div>

给元素添加li的父元素inlie-block,给ul设置font-size:0。

优点:完美解决

缺点:增加了dom数

三.解决方法2(内联元素+给符号字体+hack)

.box3 .txt em{font-family: 'Arial';*padding-right: 3px;padding:0 3px\0;}
<div class="box box3">
<h1>三.解决方法2</h1>
<h2>内联元素+给符号字体+hack</h2>
<div class="txt">
<a href="">文字链接</a>
<em>|</em>
<a href="">文字链接</a>
<em>|</em>
<a href="">文字链接</a>
<em>|</em>
<a href="">文字链接</a>
<em>|</em>
<a href="">文字链接</a>
</div>
</div>

给em设置字体,通过hark解决兼容问题。

优点:还是内联元素 结构没变

缺点:css hark需要调试

四.解决方法3(内联元素+a元素添加背景+hack)

.box4 .txt {font-size: 0;}
.box4 .txt a{background: url(line.gif) no-repeat right;font-size: 12px;padding:0 6px 0 5px;_padding-left:4px;}
<div class="box box4">
<h1>四.解决方法3</h1>
<h2>内联元素+a元素添加背景+hack</h2>
<div class="txt">
<a href="">文字链接</a>
<a href="">文字链接</a>
<a href="">文字链接</a>
<a href="">文字链接</a>
<a href="">文字链接</a>
</div>
</div>

优点:减少了dom数 元素还是内联

缺点:制作ico图标 浏览器兼容调试

需要注意的

1.如果我们用em包含特殊符号的时候一定要设置字体,否则IE就会产生下图那样的效果,而且影响到兼容性。

2.如果我们不给内联的父元素设置字体为0,页面就会产生间隙,请看下图:

总结

以上列举了三种方法解决文字与特殊符号元素结合的浏览器兼容问题。

我个人更喜欢添加背景图的方法,虽然需要hack,但是想想一个5屏的页面有可能减少上百个dom数。

个人排序: 解决方法3 > 解决方法1 > 解决方法2

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>前端研究CSS之文字与特殊符号元素结合的浏览器兼容性总结</title>
<style>
*{margin: 0;padding: 0;font-size: 12px;line-height: 1;}
h1{font-size: 16px;line-height: 26px;color: red;}
h2{margin-top: 10px;font-size: 14px;}
em{font-style: normal;}
.box{margin-top:20px;border-bottom: 1px dashed #ccc;padding-bottom: 20px;} .box2 .txt{font-size: 0;}
.box2 .txt li{font-size: 12px;display: inline-block;*zoom:1;*display: inline;}
.box2 .txt .line{padding: 0 2px;font-family: 'Arial'} .box3 .txt em{font-family: 'Arial';*padding-right: 3px;padding:0 3px\0;} .box4 .txt {font-size: 0;}
.box4 .txt a{background: url(line.gif) no-repeat right;font-size: 12px;padding:0 6px 0 5px;_padding-left:4px;}
</style>
</head>
<body>
<div class="box">
<h1>一.系统默认的样式</h1>
<h2>元素换行的段落</h2>
<div class="txt">
<a href="">文字链接</a>
<em>|</em>
<a href="">文字链接</a>
<em>|</em>
<a href="">文字链接</a>
<em>|</em>
<a href="">文字链接</a>
<em>|</em>
<a href="">文字链接</a>
</div> <h2>编写在一行的段落</h2>
<div class="txt">
<a href="">文字链接</a><em>|</em><a href="">文字链接</a><em>|</em><a href="">文字链接</a><em>|</em><a href="">文字链接</a><em>|</em><a href="">文字链接</a>
</div> <h2>有的换行有的不换行的段落</h2>
<div class="txt">
<a href="">文字链接</a><em>|</em>
<a href="">文字链接</a><em>|</em>
<a href="">文字链接</a><em>|</em>
<a href="">文字链接</a><em>|</em>
<a href="">文字链接</a>
</div>
</div> <div class="box box2">
<h1>二.解决方法1</h1>
<h2>inline-block元素+给符号字体</h2>
<ul class="txt">
<li><a href="">文字链接</a></li>
<li class="line">|</li>
<li><a href="">文字链接</a></li>
<li class="line">|</li>
<li><a href="">文字链接</a></li>
<li class="line">|</li>
<li><a href="">文字链接</a></li>
<li class="line">|</li>
<li><a href="">文字链接</a></li>
</ul>
</div> <div class="box box3">
<h1>三.解决方法2</h1>
<h2>内联元素+给符号字体+hack</h2>
<div class="txt">
<a href="">文字链接</a>
<em>|</em>
<a href="">文字链接</a>
<em>|</em>
<a href="">文字链接</a>
<em>|</em>
<a href="">文字链接</a>
<em>|</em>
<a href="">文字链接</a>
</div>
</div> <div class="box box4">
<h1>四.解决方法3</h1>
<h2>内联元素+a元素添加背景+hack</h2>
<div class="txt">
<a href="">文字链接</a>
<a href="">文字链接</a>
<a href="">文字链接</a>
<a href="">文字链接</a>
<a href="">文字链接</a>
</div>
</div>
</body>
</html>

前端研究CSS之文字与特殊符号元素结合的浏览器兼容性总结的更多相关文章

  1. 前端研究CSS之内联元素块级化/区域大小/文字和图标的位置

    做了一天的小按钮基本都是文字+小图标的组合,问题挺多处理的不好,现在总结一下做个了断. //页面结构 <span class="b"> <a href=" ...

  2. css 实现文字自动换行切同行元素高度自适应

    1.实现div行内布局所有行跟随最大高度自适应 html代码样例: <div class="row-single"> <div class="colsp ...

  3. CSS实现文字竖排 DIV CSS文字垂直竖列排版显示如何实现?

    DIV CSS实现文字竖排排版显示兼容各大浏览器,让文字垂直竖列排版布局. 有时我们需要一段文字进行从上到下竖列排版,我们知道CSS样式中有一样式可以让其竖列排版,但所有浏览器不全兼容,逼不得已放弃. ...

  4. 前端基础-- CSS

    CSS知识 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素. 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染).Css之车更丰富的文档外 ...

  5. CSS实现文本周围插入符号

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

  6. vue—你必须知道的 js数据类型 前端学习 CSS 居中 事件委托和this 让js调试更简单—console AMD && CMD 模式识别课程笔记(一) web攻击 web安全之XSS JSONP && CORS css 定位 react小结

    vue—你必须知道的   目录 更多总结 猛戳这里 属性与方法 语法 计算属性 特殊属性 vue 样式绑定 vue事件处理器 表单控件绑定 父子组件通信 过渡效果 vue经验总结 javascript ...

  7. 第十一章 前端开发-css

    第十一章 前端开发-css 1.1.0 css介绍 css是指层叠样式表(Cascading Style Sheets),样式定义如何显示html元素,样式通常又会存在于样式表中. css优势: 内容 ...

  8. 前端之CSS初识

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  9. Web前端温故知新-CSS基础

    一.CSS定义与编写CSS 1.1 CSS的定义 全名:Cascading Style Sheets -> 层叠样式表 定义:CSS成为层叠样式表,它主要用于设置HTML页面中的文本内容(字体. ...

随机推荐

  1. PHP 鸟哥:我也曾经是“不适合”编程的人

    网名:雪候鸟,大家尊称鸟哥,惠新宸 @Laruence, 是国内最有影响力的 PHP 技术专家,PHP 开发组核心成员,PECL 开发者,Zend 公司外聘顾问.他曾供职于雅虎,百度,现在新浪微博任平 ...

  2. Codeforces 1172F Nauuo and Bug [线段树]

    Codeforces 思路 定义\(f_{l,r}(x)\)表示数\(x\)从\(l\)进去\(r\)出来的时候会变成什么样子.容易发现这个函数是个分段函数,每一段都是斜率为1的一次函数,并且段数就是 ...

  3. C++概念分析之 重载、重写(覆盖)和隐藏的区别

    一.基本概念区别: 重载:是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型. 隐藏:是指派生类的函数屏蔽了与其 ...

  4. [代码审计]php反序列化漏洞

    0x01 php面向对象简介 对象:可以对其做事情的一些东西.一个对象有状态.行为和标识三种属性. 类:一个共享相同结构和行为的对象的集合. 每个类的定义都以关键字class开头,后面跟着类的名字. ...

  5. nginx+keepalived高可用实战

    1.整体架构图如下 2.环境准备 今天所配置的是keepalived+nginx 的负载均衡 下载keepalived软件 [root@LB01 tools]# wget http://www.kee ...

  6. Spring boot MyBatis基本操作

    XML 配置方式 目录结构 数据库信息: 数据库student -> 表名 custom_user  -> 主键-> custom_id ,其他字段 cusotm_name,cust ...

  7. Apache log4j 1.2 - Short introduction to log4j

    Apache log4j 1.2 - Short introduction to log4jhttps://logging.apache.org/log4j/1.2/manual.html log4j ...

  8. 为什么说基于TCP的移动端IM仍然需要心跳保活?(转)

    源:https://segmentfault.com/a/1190000006832547 为什么说基于TCP的移动端IM仍然需要心跳保活?

  9. c#反射动态创建窗体

    根据窗体的名称动态创建窗体 Assembly assembly = Assembly.GetExecutingAssembly();             // 实例化窗体 try { Form f ...

  10. flutter 路由动画

    import 'package:flutter/material.dart'; import 'package:flutter_app/pages/FirstPage.dart'; void main ...