热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

css如何解决不同浏览器下文本兼容的问题

本文来自CSS教程栏目,文中为大家介绍了css解决不同浏览器下文本兼容的问题的方法,具有一定的参考价值,希望可以帮助到大家。可以使用.netcorerazor视图加载modeldisplayname的写法。

解决过程:

1、首先想到是能不能直接靠 css 解决问题

css

.test-justify {
    text-align: justify;
}

html

测试文本

(推荐教程:CSS教程)

原来这个属性是针对段落文本两端对齐的,接着试一下 text-align-last: justify 这个属性

css

.test-justify {
    text-align: justify;
}

效果是达到了,但缺点是完全不兼容 ie 和 safari 浏览器。

2、接着思考,既然上述实现存在兼容性问题,那么能不能为 2 个,3 个,4 个等这样长度的文本单独写 css 类解决,因为表单的文本框提示文字也不会很多。

css

div {
    width: 100px;
}
.w2 {
    letter-spacing: 2em;
}
.w3 {
    letter-spacing: 0.5em;
}

html

测试
测试了
测试来了

这种方案看起来能够解决问题,应对大部分场景应该没问题了,但遗憾的是并不是真正的两端对齐,特殊显示的情况下还是无法满足需求,我们先放着,继续往下尝试。

2、以上是纯 css 实现方式,接下来我们看看 css 和 dom 结合能不能做出统一形式的解决方案。

html

测 试 文 本

css

.test-justify {
    text-align: justify;
}
span {
    display:inline-block;
    padding-left:100%;
}

css

div {
    width: 300px;
    border: 1px solid #000;
}
.test-justify {
    text-align: justify;
}
span {
    display:inline-block;
    padding-left:100%;
}

html

测试文本

js

var $this = $(".test-justify")
, justifyText = $this.text().trim()
, afterText = "";
for (var i = 0; i ";
$this.html(afterText).css({ "height": $this.height() / 2 + "px" });

好了,这种方案应该能支持主流的浏览器了,但缺点是由于通过js再调整的,所以刷新的时候仔细看会看到文本两端对齐的过程(闪一下),体验并不是很好,那就做一下兼容吧。

只有 IE 和 Safari 不支持 text-align-last: justify 所以只考虑这两种浏览器的情况下调用最后一种方案

function myBrowser() {
    var userAgent = navigator.userAgent;
 
    //判断浏览器版本  
    var isOpera = userAgent.indexOf("Opera") > -1; 
    var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; 
    var isEdge = userAgent.toLowerCase().indexOf("edge") > -1 && !isIE; 
    var isIE11 = (userAgent.toLowerCase().indexOf("trident") > -1 && userAgent.indexOf("rv") > -1);
 
    if (/[Ff]irefox(\/\d+\.\d+)/.test(userAgent)) {
        return "Firefox";
    } else if (isIE) {
        return "IE";
    } else if (isEdge) {
        return "IE";
    } else if (isIE11) {
        return "IE";
    } else if (/[Cc]hrome\/\d+/.test(userAgent)) {
        return "Chrome";
    } else if (/[Vv]ersion\/\d+\.\d+\.\d+(\.\d)* *[Ss]afari/.test(userAgent)) {
        return "Safari"
    } else {
        return "unknown"
    }
}
 
var browser = myBrowser();
if (browser == "IE" || browser == "Safari") {
    var $this = $(".test-justify")
        , justifyText = $this.text().trim()
        , afterText = "";
    for (var i = 0; i ";
    $this.html(afterText).css({ "height": $this.height() / 2 + "px" })
}

完成!

推荐视频教程:css视频教程

以上就是css如何解决不同浏览器下文本兼容的问题的详细内容,更多请关注其它相关文章!


推荐阅读
author-avatar
手机用户2502911027
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有