初识-常见浏览器兼容性问题与解决方案

2023-11-15

浏览器兼容问题一:不同浏览器的标签默认的外补丁和内补丁不同

问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大。

碰到频率:100%

解决方案:CSS里    *{margin:0;padding:0;}

备注:这个是最常见的也是最易解决的一个浏览器兼容性问题,几乎所有的CSS文件开头都会用通配符*来设置各个标签的内外补丁是0。

浏览器兼容问题二:块属性标签float后,又有横行的margin情况下,在IE6显示margin比设置的大

问题症状:常见症状是IE6中后面的一块被顶到下一行

碰到频率:90%(稍微复杂点的页面都会碰到,float布局最常见的浏览器兼容问题)

解决方案:在float的标签样式控制中加入 display:inline;将其转化为行内属性

备注:我们最常用的就是div+CSS布局了,而div就是一个典型的块属性标签,横向布局的时候我们通常都是用div float实现的,横向的间距设置如果用margin实现,这就是一个必然会碰到的兼容性问题。

浏览器兼容问题三:设置较小高度标签(一般小于10px),在IE6,IE7,遨游中高度超出自己设置高度

问题症状:IE6、7和遨游里这个标签的高度不受控制,超出自己设置的高度

碰到频率:60%

解决方案:给超出高度的标签设置overflow:hidden;或者设置行高line-height 小于你设置的高度。

备注:这种情况一般出现在我们设置小圆角背景的标签里。出现这个问题的原因是IE8之前的浏览器都会给标签一个最小默认的行高的高度。即使你的标签是空的,这个标签的高度还是会达到默认的行高。

浏览器兼容问题四:行内属性标签,设置display:block后采用float布局,又有横行的margin的情况,IE6间距bug

问题症状:IE6里的间距比超过设置的间距

碰到几率:20%

解决方案:在display:block;后面加入display:inline;display:table;

备注:行内属性标签,为了设置宽高,我们需要设置display:block;(除了input标签比较特殊)。在用float布局并有横向的margin后,在IE6下,他就具有了块属性float后的横向margin的bug。不过因为它本身就是行内属性标签,所以我们再加上display:inline的话,它的高宽就不可设了。这时候我们还需要在display:inline后面加入display:talbe。

浏览器兼容问题五:图片默认有间距

问题症状:几个img标签放在一起的时候,有些浏览器会有默认的间距,加了问题一中提到的通配符也不起作用。

碰到几率:20%

解决方案:使用float属性为img布局

备注:因为img标签是行内属性标签,所以只要不超出容器宽度,img标签都会排在一行里,但是部分浏览器的img标签之间会有个间距。去掉这个间距使用float是正道。(我的一个学生使用负margin,虽然能解决,但负margin本身就是容易引起浏览器兼容问题的用法,所以我禁止他们使用)

浏览器兼容问题六:标签最低高度设置min-height不兼容

问题症状:因为min-height本身就是一个不兼容的CSS属性,所以设置min-height时不能很好的被各个浏览器兼容

碰到几率:5%

解决方案:如果我们要设置一个标签的最小高度200px,需要进行的设置为:{min-height:200px; height:auto !important; height:200px; overflow:visible;}

备注:在B/S系统前端开时,有很多情况下我们又这种需求。当内容小于一个值(如300px)时。容器的高度为300px;当内容高度大于这个值时,容器高度被撑高,而不是出现滚动条。这时候我们就会面临这个兼容性问题。

浏览器兼容问题七:透明度的兼容CSS设置

做兼容页面的方法是:每写一小段代码(布局中的一行或者一块)我们都要在不同的浏览器中看是否兼容,当然熟练到一定的程度就没这么麻烦了。建议经常会碰到兼容性问题的新手使用。很多兼容性问题都是因为浏览器对标签的默认属性解析不同造成的,只要我们稍加设置都能轻松地解决这些兼容问题。如果我们熟悉标签的默认属性的话,就能很好的理解为什么会出现兼容问题以及怎么去解决这些兼容问题。

  1. /* CSS hack*/ 

我很少使用hacker的,可能是个人习惯吧,我不喜欢写的代码IE不兼容,然后用hack来解决。不过hacker还是非常好用的。使用hacker我可以把浏览器分为3类:IE6 ;IE7和遨游;其他(IE8 chrome ff safari opera等)

◆IE6认识的hacker 是下划线_ 和星号 *

◆IE7 遨游认识的hacker是星号 *

比如这样一个CSS设置:

  1. height:300px;*height:200px;_height:100px; 

IE6浏览器在读到height:300px的时候会认为高时300px;继续往下读,他也认识*heihgt, 所以当IE6读到*height:200px的时候会覆盖掉前一条的相冲突设置,认为高度是200px。继续往下读,IE6还认识_height,所以他又会覆盖掉200px高的设置,把高度设置为100px;

IE7和遨游也是一样的从高度300px的设置往下读。当它们读到*height200px的时候就停下了,因为它们不认识_height。所以它们会把高度解析为200px,剩下的浏览器只认识第一个height:300px;所以他们会把高度解析为300px。因为优先级相同且想冲突的属性设置后一个会覆盖掉前一个,所以书写的次序是很重要的。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初识-常见浏览器兼容性问题与解决方案 的相关文章

  • Valine 一款快速、简洁且高效的无后端评论系统

    Valine 一款快速 简洁且高效的无后端评论系统 简介 Valine 诞生于2017年8月7日 是一款基于LeanCloud的快速 简洁且高效的无后端评论系统 理论上支持但不限于静态博客 目前已有Hexo Jekyll Typecho H
  • 前端web开发的MVC模式

    MVC概论起初来之桌面应用开发 其实java的structs框架最能体现MVC框架 model模型是理解成服务器端的模块程序 view为发送给客服端的内容 Controller为servlet程序控制跳转和工作流 随着前端Ajax兴起 前端
  • 什么是用户token(令牌)-- 转

    在目前的互联网或者计算机网络技术中 经常会听到token或者 令牌 这个词 那有没有想过 token或者说令牌到底是什么东西 有什么作用 为什么token的中文翻译是 令牌 其实这个问题也困扰了我很长的时间 长久以来我都是从token的形式
  • 7个步骤让PC网站自动适配手机网页

    传统的网站如何完成向移动设备的快速转型 通过移动适配技术可以实现 切图网是国内首家基于web技术服务的公司 而移动适配主要通过底层的web技术开发手段来完成 下面切图网将从技术角度来告诉你通过7个步骤来完成一个PC网站向移动设备的跳跃 1允
  • 从零开始搭建自己的VueJS2.0+ElementUI单页面网站(一、环境搭建)

    前言 VueJS可以说是近些年来最火的前端框架之一 越来越多的网站开始使用vuejs作为前端框架 vuejs轻量 简单的特性使得前端开发变得更加简易 而基于vuejs的前端组件库也越来越多 我们今天使用的ElementUI 是饿了么团队开发
  • CSS之Sass中的@mixin和@extend,使用详细(Sass中@mixin和@extend的区别)

    简介 mixin 该指令用于定义可重用的代码块 可以在需要的地方进行调用 通过 mixin指令 你可以将一组样式代码封装成一个mixin 并在需要的地方使用 include指令来调用这个mixin 这样可以避免重复编写相同的样式代码 提高代
  • Antd的Upload+fetch+FormData上传Excel文件请求方式?

    let formData new FormData formData append file fileList 0 fetch 接口名称 method POST headers Content Type multipart form dat
  • input框在chrome浏览器下粘贴的默认底色

    Chrome浏览器对于input输入框的值会有一个默认的记录 导致后续在输入的时候出现 选择后在input框会出现一个默认底色 如图 这样对整个界面而言就感觉恨不协调 为了消去这种现象 可以在css中引入一下代码 input webkit
  • 2022年哪些前端技术点会火

    转载于 2022年哪些前端技术点会火 扫地盲僧 原创不易 文章质量很高 个人留存 希望大家支持原作者 2022 年什么会火 什么该学 本文正在参与 聊聊 2022 技术趋势 征文活动 前段时间我发布了一篇关于 2022年前端行业技术发展趋势
  • JavaScript delete 方法之(删除对象中的某个元素)

    delete方法用于删除对象的指定元素 包括变量和函数 示例 删除对象中的某个属性 后台返回一个对象 data total 6 法人 1 可公示 2 个人 1 国家类型 1 非国家类型 1 非公示 0 而我不需要total这个属性 需要把它
  • 实践指南-前端性能提升 270%

    一 背景 当我们疲于开发一个接一个的需求时 很容易忘记去关注网站的性能 到了某一个节点 猛地发现 随着越来越多代码的堆积 网站变得越来越慢 本文就是从这样的一个背景出发 着手优化网站的前端性能 并总结出一套开发习惯 让我们在日常开发时 也保
  • Web 前端常用正则校验规则

    Web 前端常用正则校验规则 作为 Web 前端开发 常用的正则校验规则有很多 下面是一些常见的示例 1 校验手机号码 手机号码的正则表达式可以根据不同国家和地区的手机号码格式进行调整 以下是中国大陆的手机号码正则表达式 const reg
  • 记一次浏览器下载错误处理-失败网络错误

    背景 最近在自己电脑上Chrome浏览器正常使用 但只要是下载软件 就会在下载几十秒后 自动停止 报失败 网络错误 导致文件都下载不成功 如下图 猜测是更改了哪块的配置 导致一直中断 可以依次检查以下几种方案 1 检查下载文件目录是否存在
  • css圆角容器改变背景色时圆角失效

    圆角的容器 改变背景色时 新背景色却并不是圆角 而是填充的直角 解决办法 给容器加样式 overflow hidden
  • UniAPP布局

    uniapp建议使用flex布局 首先定义flex容器 display flex flex容器按主轴排列填充 支持横向 纵向排列 flex属性如下 flex direction排列方向 flex direction row flex wra
  • css3设置背景图片的大小

    background size 设置背景图片的大小 以长度值或百分比显示 还可以通过cover和contain来对图片进行伸缩 语法 1 background size auto 默认值 不改变背景图片的高度和宽度 2 background
  • 小程序实现身份证取景框拍摄

    身份证取景框的实现主要是借助于camera 组件及cover view组件 先看下案例 wxml代码
  • 常见JS动画效果

    作为一名前端开发人员 想要的大多都是 在开发过程中 看着自己制作的动画的炫酷以及困难的解决 开发结束后 自己的项目 成果可以被他人认可接受 人们浏览网页时 若一个网页动画效果丰富炫酷 性能良好 体验度良好 自然会受到吸引去打来浏览 吸引用户
  • 关于Vue.js和React.js,听听国外的开发者怎么说?

    VueJS 与 ReactJS 到底怎么样如何 听听别人怎么说 使用所有新的库和框架 很难跟上所有这些库和框架 也就是说 这就需要您决定哪些是值得花时间的 让我们看看人们说什么 和Vue JS一起工作是很愉快的 我发现学习曲线很浅 然而 这
  • React 教程及其API接口文档

    React 详细中文开发文档 可以阅读 http reactjs cn react docs tutorial html 英文原文 http facebook github io react 中文论坛 http react china or

随机推荐

  • Spring Cloud(八):使用Spring Cloud Bus来实现配置动态更新

    使用Spring Cloud Config我们能实现服务配置的集中化管理 在服务启动时从Config Server获取需要的配置属性 但如果在服务运行过程中 我们需要将某个配置属性进行修改 比如将验证码的失效时间从五分钟调整为十分钟 如何将
  • 使用VS Code进行Vue模板编程的设置方法

    Vue js是一种流行的JavaScript框架 用于构建前端应用程序 在VS Code中进行Vue模板编程时 可以通过一些扩展和配置来提高开发效率 本文将介绍如何设置VS Code以优化Vue模板编程体验 安装Vue扩展 首先 我们需要安
  • vscode 统计代码行数的插件

    1 安装插件 VS Code Counter 2 安装好之后 shift ctrl p 调出命令行 选择合适的命令直接统计 一般点击 Count lines in directory 然后确认要统计的目录即可 3 会以统计时间生成统计文件夹
  • VS Code + Markdown Preview Enhanced 出现 mermaid预览流程图看不见线条问题的解决方案

    VS Code mermaid预览流程图看不见线条问题的解决方案 使用mermaid插件可以在Markdown文档中插入漂亮的流程图 但是VS code安装上Markdown Preview Enhanced插件之后 看到的却是这样的效果
  • Java之集合的排序方式(Comparable和Comparator的基本使用以及区别)

    文章目录 一 Comparable接口 1 代码示例 2 运行结果 3 案例分析 二 Comparator接口 1 代码示例 2 运行结果 3 案例分析 三 Comparable和Comparator对比 1 接口位置 2 实现方式 3 排
  • SpringBoot + Mybatis 多模块( module )项目搭建教程

    作者 枫本非凡 www cnblogs com orzlin p 9717399 html 一 前言 最近公司项目准备开始重构 框架选定为SpringBoot Mybatis 本篇主要记录了在IDEA中搭建SpringBoot多模块项目的过
  • 8k Byte , 8bit的ROM存储器,其地址线和数据线各需要多少根?

    总共容量为810248bits 2 16bits 因此其地址线需要16根 因为是8bit的ROM存储器 因此数据线需要8根
  • 使用ggplot2包在R语言中抑制数据轴上的科学计数法

    使用ggplot2包在R语言中抑制数据轴上的科学计数法 在数据可视化领域 ggplot2是R语言中最流行和强大的包之一 它提供了丰富的功能和灵活性 使我们能够创建出美观 清晰的图形来展示数据 其中一个常见的问题是 当我们使用ggplot2绘
  • 【自然语言处理】隐马尔可夫模型【Ⅵ】精度问题

    有任何的书写错误 排版错误 概念错误等 希望大家包含指正 由于字数限制 分成六篇博客 自然语言处理 隐马尔可夫模型 马尔可夫模型 自然语言处理 隐马尔可夫模型 隐马尔科夫模型概述 自然语言处理 隐马尔可夫模型 估计问题 自然语言处理 隐马尔
  • 非递减排列和非递增排列的定义

    递增排列 1 2 3 4 5 6 7 8 递减排列 8 7 6 5 4 3 2 1 非递减排列 1 2 3 4 5 6 6 7 8 8 非递增排列 9 8 8 7 6 5 2 2 1
  • 小白学python-数据清洗

    数据清洗 赔率 公路堵车模型的概念及应用 主成分分析PCA 新的的特征组合 车辆数据描述 one hot编码会使特征值大量增加 维度变高视情况而定 Logistic回归 AUC 曲线下的面积 求取素数以及赔率的代码 import opera
  • web service概念、架构及相关知识

    一 WebService的定义 WebService有好几种定义 W3C组织对其定义 WebService是一个软件系统 为了支持跨网络的机器间互操作交互而设计 WebService通常被定义为一组模块化的API 我们可以通过网络进行调用
  • 太原理工大学19年Java试题复习笔计

    19年Java复习题 1 为使一个名为Example的public类成功编译 需至少满足以下哪个条件 2 0分 A Example类中必须定义一个正确的main函数 B Example类中必须定义在 Example java源文件中 C E
  • sklearn 神经网络

    sklearn 神经网络 url https blog csdn net luanpeng825485697 article details 79064657 url sklearn 神经网络 多层感知器的优点 可以学习得到非线性模型 使用
  • 雷军发布会刚结束,就能写出上万字原创文章!

    前言 看完雷军演讲会之后你有没有看到过很多文章 成千上万个字的原创文章 瞬间就出现了 这是一个一个字敲的吗 当然不是 是AI 话不多说直接上教程 把雷军的演讲整理到笔记中 可以是md格式 word格式等等 复制粘贴即可 打开网站 smart
  • vmware workstation14连网

    记录一下手残的过程 1 选择NAT形式的连接 2 在桌面的右上角有个圆圈 右击这个图标 会显示一个有线连接 默认是关闭的 3 所以设置成连接状态 4 右击有线连接 进行网络配置 5 所有都配置成自动获取
  • MybatisPlus多表连接查询

    mybatis plus作为mybatis的增强工具 它的出现极大的简化了开发中的数据库操作 但是长久以来 它的联表查询能力一直被大家所诟病 一旦遇到left join或right join的左右连接 你还是得老老实实的打开xml文件 手写
  • mybatis与数据库连接过程

    菜鸟发文 请大神多多指导 1 准被一个maven项目 2 先导入jar包 3 配置mybatis核心文件 4 把连接数据库的配置项抽离出来 5 编写实体类 6 编写接口 7 编写mapper映射文件 8 把相同SQL session 方法抽
  • TCP三次握手-backlog队列问题

    TCP三次握手 backlog队列问题 md 概述 之前有同事做压力测试时 发现无论如何都无法突破128并发的问题 经排查发现该服务器ACCEPT QUEUE队列都为128 限制了网络的并发 TCP三次握手 Linux内核协议栈为一个TCP
  • 初识-常见浏览器兼容性问题与解决方案

    浏览器兼容问题一 不同浏览器的标签默认的外补丁和内补丁不同 问题症状 随便写几个标签 不加样式控制的情况下 各自的margin 和padding差异较大 碰到频率 100 解决方案 CSS里 margin 0 padding 0 备注 这个