常见的浏览器css和js兼容性问题汇总

2023-11-01

无论是在工作或者面试中,总会遇到关于浏览器兼容性的问题,往往会感到一头雾水不知从何说起,于是我结合一些工作经验及从网上搜集的一些资料对此做了一些汇总,希望对从事前端工作的朋友们起到一些帮助。

css:

1.初始化样式:由于浏览器对标签的默认支持不同,所以我们要统一,就要进行CSS reset。如YaHoo的CSS reset。

2.IE6双边距bug: 块属性标签添加了浮动float之后,若在浮动方向上也有margin值,则margin值会加倍,就会把某些元素挤到了第二行。给float元素添加display:inline 即可正常显示。
解决方案:

img{border:none}||img{border:0}||img{
disply:block;
}

3.行内属性标签,设置display:block后采用float布局,又有横行的margin的情况,ie6间距bug(类似第二种):
解决方案:在display:block;后面加入display:inline;display:table;

4.图片默认有间距
解决方案:vertical-align:middle

5.超链接访问过后 样式就混乱了,hover样式不出现了。其实主要是其CSS属性的排序问题。
解决方案:最好按照这个顺序:L-V-H-A
a:link{} a:visited{} a:hover{} a:active{}

6.chrome下默认会将小于12px的文本强制按照12px来解析。
解决办法是给其添加属性:-webkit-text-size-adjust: none;

7.两种盒子模式:IE盒子模式和W3C标准模式,所以对象的实际宽度也要注意。
这里写图片描述
这里写图片描述
举例说明:一个盒子的 margin 为 20px,border 为 5px,padding 为 10px,content 的宽为 200px,如果用标准 W3C 盒子模型解释,那么这个盒子需要占据的位置为:宽 20*2 +5*2+10*2+200=270px,盒子的实际宽度为:5*2+10*2+200=230px;如果用IE 盒子模型,那么这个盒子需要占据的位置为:宽 20*2+200=240px,盒子的实际宽度依然是: 200px。

8.鼠标的手势也有问题:FireFox的cursor属性不支持hand,但是支持pointer,IE两个都支持;所以为了兼容都用pointer

9.opacity透明度问题:一般就直接 opacity: 0.6 ; IE就 filter: alpha(opacity=60)。ie6下:filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60);

10.IE6下div高度无法小于10px
解决方案:verflow:hidden | zoom:0.08 | line-height:1px|font-size:0

11.由于浮动引起的无法识别父盒子高度问题
解决方案:4种清除浮动的方法
清除浮动方法1:给浮动的元素的祖先元素加高度。有高度的盒子,才能关住浮动。
清除浮动方法2:clear:both;但是有致命缺陷,margin失效。
清除浮动方法3:隔墙法。在两个浮动的div间增加一个空div,就像一个屏障隔开了2个浮动,使两个浮动间互不影响。缺点: 额外增加了很多的标签,对页面结构及其的不好。
清除浮动方法4:overflow:hidden;zoom:1;
缺点: 里面尽肯能的不能有定位。 如果有定位,可能会切掉一部分。
清除浮动方法5:利用after伪类清除浮动

.clearfix:after{
    content:"";    内容
    visibility:hidden;  隐藏  
    height:0;         高度一定是0
    display:block;     转换
    clear:both;       清除浮动
    }
.clearfix{
    zoom:1;   为了照顾ie6
    }
谁清除浮动,谁引用。

清除浮动方法6:利用before 和 after 伪类清除浮动

.clearfix:before,.clearfix:after{
       content:””;
       display:table;  /*转换为表格模式  css3 新加*/
} 
.clearfix:after{
       clear:both;
    }
    .clearfix{
      *zoom:1;
     }

12.行内块元素之间空白缝隙的问题:
解决方案:
(1.)利用margin 负值,例如Margin-left:-8px;
(2.)把行内块写到一行上去。
(3.)给父盒子加:font-size:0;
(4.)利用js来清除缝隙。

13.为什么web标准中IE无法设置滚动条颜色了
解决方案:将body换成html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<style type="text/css">
<!-- 
html { 
scrollbar-face-color:#f6f6f6; 
scrollbar-highlight-color:#fff; 
scrollbar-shadow-color:#eeeeee; 
scrollbar-3dlight-color:#eeeeee; 
scrollbar-arrow-color:#000; 
scrollbar-track-color:#fff; 
scrollbar-darkshadow-color:#fff; 
} 
-->
</style>

14.怎么样才能让层显示在FLASH之上呢?
解决的办法是给FLASH设置透明

<param name="wmode" value="transparent" />

javascript :

1.HTML对象获取问题
FireFox:document.getElementById(“idName”);
ie:document.idname或者document.getElementById(“idName”).
解决办法:统一使用document.getElementById(“idName”);

2.const问题
说明:Firefox下,可以使用const关键字或var关键字来定义常量;
IE下,只能使用var关键字来定义常量.
解决方法:统一使用var关键字来定义常量.

3.event.x与event.y问题
说明:IE下,event对象有x,y属性,但是没有pageX,pageY属性;
Firefox下,event对象有pageX,pageY属性,但是没有x,y属性.
解决方法:使用mX(mX = event.x ? event.x : event.pageX;)来代替IE下的event.x或者Firefox下的event.pageX.

4.window.location.href问题
说明:IE或者Firefox2.0.x下,可以使用window.location或window.location.href;
Firefox1.5.x下,只能使用window.location.
解决方法:使用window.location来代替window.location.href.

5.firefox与IE的父元素(parentElement)的区别
IE:obj.parentElement
firefox:obj.parentNode
解决方法: 因为firefox与IE都支持DOM,因此使用obj.parentNode是不错选择.

6.集合类对象问题
问题说明:IE下,可以使用 () 或 [] 获取集合类对象;Firefox下,只能使用 [ ]获取集合类对象。
解决方法:统一使用 [] 获取集合类对象。

7.自定义属性问题
问题说明:IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute() 获取自定义属性;Firefox下,只能使用getAttribute() 获取自定义属性。
解决方法:统一通过getAttribute() 获取自定义属性。

8.input.type属性问题
问题说明:IE下input.type属性为只读;但是Firefox下input.type属性为读写。
解决办法:不修改input.type属性。如果必须要修改,可以先隐藏原来的input,然后在同样的位置再插入一个新的input元素。

9.event.srcElement问题
问题说明:IE下,even对象有srcElement属性,但是没有target属性;Firefox下,even对象有target属性,但是没有srcElement属性。
解决方法:使用srcObj = event.srcElement ?event.srcElement : event.target;

10.event事件问题

document.onclick=function(ev){//谷歌火狐的写法,IE9以上支持,往下不支持;
        var e=ev;
        console.log(e);
    }
    document.onclick=function(){//谷歌和IE支持,火狐不支持;
        var e=event;
        console.log(e);
    }
    document.onclick=function(ev){//兼容写法;
        var e=ev||window.event;
        var mouseX=e.clientX;//鼠标X轴的坐标
        var mouseY=e.clientY;//鼠标Y轴的坐标
    }

11.DOM节点相关的问题

//DOM节点相关,主要兼容IE 6 7 8
    function nextnode(obj){//获取下一个兄弟节点
        if (obj.nextElementSibling) {
            return obj.nextElementSibling;
        } else{
            return obj.nextSibling;
        };
    }
    function prenode(obj){//获取上一个兄弟节点
        if (obj.previousElementSibling) {
            return obj.previousElementSibling;
        } else{
            return obj.previousSibling;
        };
    }
    function firstnode(obj){//获取第一个子节点
        if (obj.firstElementChild) {
            return obj.firstElementChild;//非IE678支持
        } else{
            return obj.firstChild;//IE678支持
        };
    }
    function lastnode(obj){//获取最后一个子节点
        if (obj.lastElementChild) {
            return obj.lastElementChild;//非IE678支持
        } else{
            return obj.lastChild;//IE678支持
        };
    }

12.document.getElementsByClassName问题

window.onload = function() {
           // 封装自己的类名
            function getClass(classname)
            {
                //判断支持否
                if(document.getElementsByClassName)
                {
                    return document.getElementsByClassName(classname);
                }
                var arr = []; //用于返回 数组
                var dom = document.getElementsByTagName("*");
                for(var i=0;i<dom.length;i++)  // 遍历所有的 盒子
                {
                    var txtarr = dom[i].className.split(" "); // 分割类名 并且 转换为数组
                    //  ["demo","test"];
                    for(var j=0;j<txtarr.length;j++)  // 遍历 通过类名分割的数组
                    {
                        if(txtarr[j] == classname)
                        {
                            arr.push(dom[i]); // 我们要的是 div
                        }
                    }
                }
                return arr;
            }
        }

13.获取元素的非行间样式值:

 function getStyle(obj,attr) {  //  谁的属性
        if(obj.currentStyle)  // ie 等
        {
            return obj.currentStyle[attr];  // 返回传递过来的某个属性
        }
        else
        {
            return window.getComputedStyle(obj,null)[attr];  // w3c 浏览器
        }
    }

14.阻止事件传播:

<script>
    var btn = document.getElementById("btn");
    document.onclick = function() {
        alert("点击了空白处")
    }
    btn.onclick = function(event) {
        alert("点击了按钮")
        var event = event || window.event;
        if(event && event.stopPropagation)
        {
            event.stopPropagation();  //  w3c 标准
        }
        else
        {
            event.cancelBubble = true;  // ie 678  ie浏览器
        }
    }
</script>

15.阻止默认事件:

//js阻止默认事件
    document.onclick=function(e){
        var e=e||window.event;
        if (e.preventDefault) {
            e.preventDefault();//W3C标准
        }else{
            e.returnValue='false';//IE..
        }
    }

16.鼠标滚轮滚动事件:

//鼠标滚轮事件
    //火狐中的滚轮事件
    document.addEventListener("DOMMouseScroll",function(event){
        alert(event.detail);//若前滚的话为 -3,后滚的话为 3
    },false)
    //非火狐中的滚轮事件
    document.onmousewheel=function(event){
        alert(event.detail);//前滚:120,后滚:-120
    }

17.设置监听事件:

//设置监听事件
     function addEvent(obj,type,fn){//添加事件监听,三个参数分别为 对象、事件类型、事件处理函数,默认为false
        if (obj.addEventListener) {
            obj.addEventListener(type,fn,false);//非IE
        } else{
            obj.attachEvent('on'+type,fn);//ie,这里已经加上on,传参的时候注意不要重复加了
        };
    }
    function removeEvent(obj,type,fn){//删除事件监听
        if (obj.removeEventListener) {
            obj.removeEventListener(type,fn,false);//非IE
        } else{
            obj.detachEvent('on'+type,fn);//ie,这里已经加上on,传参的时候注意不要重复加了
        };
    }

18.浏览器的宽高问题:

IE中: 
document.body.clientWidth ==> BODY对象宽度 
document.body.clientHeight ==> BODY对象高度 
document.documentElement.clientWidth ==> 可见区域宽度 
document.documentElement.clientHeight ==> 可见区域高度 
FireFox中: 
document.body.clientWidth ==> BODY对象宽度 
document.body.clientHeight ==> BODY对象高度 
document.documentElement.clientWidth ==> 可见区域宽度 
document.documentElement.clientHeight ==> 可见区域高度 
Opera中: 
document.body.clientWidth ==> 可见区域宽度 
document.body.clientHeight ==> 可见区域高度 
document.documentElement.clientWidth ==> 页面对象宽度(即BODY对象宽度加上Margin宽) 
document.documentElement.clientHeight ==> 页面对象高度(即BODY对象高度加上Margin高) 
没有定义W3C的标准,则 
IE为: 
document.documentElement.clientWidth ==> 0 
document.documentElement.clientHeight ==> 0 
FireFox为: 
document.documentElement.clientWidth ==> 页面对象宽度(即BODY对象宽度加上Margin宽) 
document.documentElement.clientHeight ==> 页面对象高度(即BODY对象高度加上Margin高) 
Opera为: 
document.documentElement.clientWidth ==> 页面对象宽度(即BODY对象宽度加上Margin宽) 
document.documentElement.clientHeight ==> 页面对象高度(即BODY对象高度加上Margin高) 


网页可见区域宽: document.body.clientWidth 
网页可见区域高: document.body.clientHeight 
网页可见区域宽: document.body.offsetWidth (包括边线的宽) 
网页可见区域高: document.body.offsetHeight (包括边线的高) 
网页正文全文宽: document.body.scrollWidth 
网页正文全文高: document.body.scrollHeight 
网页被卷去的高: document.body.scrollTop 
网页被卷去的左: document.body.scrollLeft 
网页正文部分上: window.screenTop 
网页正文部分左: window.screenLeft 
屏幕分辨率的高: window.screen.height 
屏幕分辨率的宽: window.screen.width 
屏幕可用工作区高度: window.screen.availHeight 
屏幕可用工作区宽度: window.screen.availWidth 

HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth 
scrollHeight: 获取对象的滚动高度。 
scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离 
scrollWidth:获取对象的滚动宽度 
offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度 
offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置 
offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置 
event.clientX 相对文档的水平座标 
event.clientY 相对文档的垂直座标 
event.offsetX 相对容器的水平坐标 
event.offsetY 相对容器的垂直坐标 
document.documentElement.scrollTop 垂直方向滚动的值 
event.clientX+document.documentElement.scrollTop 相对文档的水平座标+垂直方向滚动的量 

19.可视区域大小

<script>
    function client() {
        if(window.innerWidth != null)  // ie9 +  最新浏览器
        {
            return {
                width: window.innerWidth,
                height: window.innerHeight
            }
        }
        else if(document.compatMode === "CSS1Compat")  // 标准浏览器
        {
            return {
                width: document.documentElement.clientWidth,
                height: document.documentElement.clientHeight
            }
        }
        return {   // 怪异浏览器
            width: document.body.clientWidth,
            height: document.body.clientHeight

        }
    }

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

常见的浏览器css和js兼容性问题汇总 的相关文章

  • 如何将两个图像放置在一个div的对角

    如你所见 我不是 CSS 专家 我需要一些帮助来了解如何使用两个图像制作这个 div 如下图所示 托马斯是对的 但还有更好的解决方案 div img class align left src alt description of your
  • CSS3 转换会立即发生吗?

    我有一个名为 artwork需要动画化 artwork webkit transition all 20s ease in transition all 20s ease in width 75 display block margin 0
  • 这个 CSS 选择器是什么? [类* =“跨度”]

    我在 Twitter Bootstrap 中看到了这个选择器 show grid class span background color eee text align center border radius 3px min height
  • 使用 PHP 将 class="active" 添加到活动页面

    动态标头 CSS 类更改为活动使用 PHP 目录 我想要的班级 li 在活动目录下更改标签 现在 每个指南都向我展示了当您的页面等于它时如何执行此操作 但我想更改 这 li li 取决于我所在的目录 例如 如果说我在 http exampl
  • 如何实现右边缘倾斜的 div? [复制]

    这个问题在这里已经有答案了 我几天来一直在寻找使 div 的右边缘倾斜 45 度的代码 这是我特别想要得到的图像示例 似乎有很多 倾斜边缘 div 的示例 但我找不到任何具有特定右侧倾斜的示例 我花了很多时间试图改变其他人的代码 但结果却一
  • 在打印 CSS 上在每个页面周围绘制边框?

    打印时我需要在每个页面周围绘制边框 我最初是使用带有分页符的 div 来完成此操作 例如 media print contentContainer position inline height 98 width 100 top 0px le
  • 单击输入字段会触发窗口调整大小

    我有一个带有徽标 菜单和搜索的标题 当我在桌面上时 我会按该顺序显示所有元素 但如果我的窗口宽度小于 980 像素 菜单会隐藏 有一个切换按钮 并且徽标会与nav并附在徽标之后 如果宽度更大 则徽标将再次分离并附加到 DOM 中的旧位置 w
  • Symfony 2 使用 CSS 设置背景图片

    I want to put a background image for a menu in symfony But I can t figure out how to do it I managed to style a lot of t
  • 显示班级图片 10 秒

    我有下面给出的代码显示9 boxes 其值如下digital time 还有一个班级box002显示digits相当于随机选择的九个盒子的值 box002 can be dragged to digital time starting wi
  • 如何设置旋转元素背面的样式?

    我有一个figure它是可旋转的 通过用户输入任意角度 该旋转明显地使用transition财产 当该元件旋转超过 90 度 90 度时 元件的背面可见 我想对元素的通常隐藏的一面进行与正面不同的设计 但我不确定如何实现这一点 figure
  • CSS:缩放字体大小以适应父块元素的高度

    我发现的几乎每个问题和答案都谈到了视口大小 这确实不是我的问题 拿着这支笔 https codepen io njt1982 pen pZjZNM https codepen io njt1982 pen pZjZNM 我有一个非常基本的
  • 通过 JavaScript 检测浏览器换行

    我需要 javascript 来检测每个浏览器包装的文本行并将其包装到 span class line 我读过一些关于测量每个单词的 y 轴的文章 但还没有看到可靠的解决方案 这是我到目前为止所拥有的 看到它Jsfiddle http js
  • CSS3 box-shadow 用于类似重叠的 div

    我正在尝试用css3来实现这种效果 HTML 代码显然是这样的
  • 如何设置菜单按钮和菜单项的样式

    我尝试更改菜单按钮中的样式 我可以更改菜单按钮样式 但不能更改其菜单项 无论我尝试什么 菜单按钮内的菜单项都保持不变 menu button fx background color black menu button label fx ba
  • 保持未知数量的 div 居中,每行最多 4 个

    我有一个简单的问题 但我自己无法解决 简而言之 有一个未知电话我必须在页面中放置的元素数量 最多 每行 4 个元素 但仍居中 此图片给您一个提示 我为了示例而设置它 详细 在上图中我涵盖了不同的场景 例如 如果总共有 5 个元素 则应使用第
  • 现在 CSS3 供应商前缀有多必要? [复制]

    这个问题在这里已经有答案了 我只是想知道现在在 CSS 中指定 webkit moz ms 或 o 等供应商前缀在多大程度上仍然有必要 如果我理解正确的话 opera 切换到了 webkit 所以会删除 o 对吗 IE 在 IE10 中不再
  • 如何在没有@import的情况下减少@import?

    我用的较少 从 Google PageSpeed 我了解到 使用 importCSS 文件中的内容会影响网站速度 所以我想排除任何 import来自我的 CSS 的东西 我有 2 个不同的样式表reset css and rebuild c
  • 指针事件:无,过滤,适用于 ie8 和任何地方,不适用于 ie9

    正如我在这里看到的 https stackoverflow com questions 3680429 click through a div to underlying elements 4839672 4839672 过滤器可用于模拟跨
  • 更改文本输入标签中文本的大小?

    我有一个很大的文本输入框 但我无法更改字体大小
  • CSS 是否有不等于选择器?

    CSS中有类似 不等于 的东西吗 例如 我有以下代码 input 但对于某些输入 我需要将其作废 我想通过将类 reset 添加到输入标签来做到这一点 例如

随机推荐

  • AI2019下载Adobe Illustrator CC2019安装教程

    Illustrator 简称 AI 是一款非常强大的矢量图制图软件 在平面设计 UI设计 广告设计等诸多行业都有广泛的应用 并且作为必备软件有它的不可替代性 但很多朋友在开始安装AI软件的时候却遇到种种困难 为此 我亲自录制了安装教程 也分
  • ios开发问题记录记录

    1 提示 usr include c v1 threading support 457 11 error build Use of undeclared identifier nanosleep 原因 header search paths
  • C++ deque的总结

    deque 1 deque是什么 deque 发音类似 deck 是双端队列不规则的首字母缩写 双端队列是动态大小的序列式容器 其可以像两端进行伸缩 特定的库可以以不同的方式实现deque 但通常都是一种动态数组 不论在何种情况下 它都允许
  • npm安装两个相同的库方法

    特殊情况下一个node项目中我们需要安装两个相同的库 package json devDependencies demoA vue auto routing npm vue auto routing 1 0 1 目录名 库名 指定npm库版
  • MTU的测量方法

    MTU的测量方法 MTU是Maximum Transmission Unit的缩写 意思是网络上传送的最大数据包 MTU的单位是字节 大部分网络设备的MTU都是1500 如果本机的MTU比网关的MTU大 大的数据包就会被拆开来传送 这样会产
  • 淋巴结病理数字玻片读取与处理代码

    更多数学原理小文请关注公众号 未名方略 Whole slide images are generally stored in a multi resolution pyramid structure 首先安装openslide模块
  • 如何用魔法提示词打破 Code Interpreter 修改代码的「鬼打墙」?

    注 本文为小报童精选文章 已订阅小报童或加入知识星球 玉树芝兰 用户请勿重复付费 需求 最近我喜欢上了用 Claude 2 而不是 GPT 4 来润色文章 最主要的原因是 Claude 2 100K 的 tokens 长度 实在是优势显著
  • 21天 Jenkins打卡-Day1 环境准备

    第1天作业 1 确保自己已经有一台Linux服务器 且通过SSH客户端 SecureCRT Xshell 等都可以 链接上服务器 2 你的服务器发行版 Centos Ubuntu 等 3 在你的Linux服务器上 安装jdk8 4 验证安装
  • vue结合el-dialog 封装自己的confirm二次确认弹窗

    这里使用el dialog 主要是用他的关闭动画 让关闭更加丝滑 首先在components 添加 ConfirmAlert文件夹 然后添加vue和js 文件 index js import Vue from vue import conf
  • pi控制直流电机c语言,一种基于PI控制的直流电机调速控制系统及控制方法与流程...

    本发明属于传感器技术领域 具体涉及种一种基于PI控制的直流电机调速控制系统及控制方法 背景技术 直流电机有广泛的应用 如何控制和调整电机的转速是工程和实验领域要解决的问题之一 通常采用PWM波控制电机的转速 根据PWM波的占空比调整电机的转
  • java基础案例4-4学生和老师

    package com itheima import java util Scanner abstract class Person void speak class Teacher extends Person private Strin
  • 查看浏览器token

    很简单
  • QT进行http请求(post/get)

    在刚接触QT时第一个任务就是进行http请求 现在才开始记录 可能会有遗漏的点 一 post请求 在 pro文件中 QT network 在 h文件中添加对应的头文件 include
  • 通用业务平台设计(五):预警平台建设

    前言 在上家公司 随着业务的不断拓展 从支持单个国家单个主体演变成支持多个国家多个主体 对预警的诉求越来越紧迫 如何保障业务的稳定性那 预警可以帮我们提前甄别风险 从而让我们可以在风险来临前将其消灭 每个业务组写自己的报警规则会极大的降低开
  • 【基于springboot + vue 的作业管理系统的设计与实现】

    获取 http mtw so pwd 6fSSgK 密码 123456 本文介绍了一个基于springboot vue 的作业管理系统的设计与实现 该系统主要包括学生端和教师端两个模块 学生端可以查看作业要求 上传作业文件 查看作业成绩和评
  • CPU性能测试项

    CPU性能测试项 一 思维导图 二 CPU简介 中央处理器 CPU 是电子计算机的主要设备之一 电脑中的核心配件 其功能主要是解释计算机指令以及处理计算机软件中的数据 CPU是计算机中负责读取指令 对指令译码并执行指令的核心部件 中央处理器
  • 2021年认证杯-数学建模

    认证杯 2021年数学建模网络挑战赛 认证杯的含金量其实还算数学建模里较高的 获奖证书上是全国比赛 而非赛区 比赛分为第一阶段和第二阶段 还会有全球数学建模能力认证中心 中国运筹学会 内蒙古自治区数学学会的盖章认可 建议大家去踊跃报名 如果
  • PCIE总线基本介绍(和PCI总线差异、速率计算、引脚定义)

    1 PCI和PCIE的差异 1 PCIE协议在软件编程上是兼容PCI协议 不同在于PCIE和PCI的控制器 2 PCIE是差分串行信号线 PCI是电平并行信号线 3 PCI协议使用INTA INTB INTC INTD 四根中断线来触发终端
  • openGL之API学习(九十五)glProgramBinary

    将着色器程序的二进制数据加载进着色器程序 二进制数据由glGetProgramBinary生成 使用二进制数据可以避免编译开销 并且不用呈现shader的源代码 OpenGL并不指定任何二进制格式 二进制格式完全由各个实现的供应商决定 这意
  • 常见的浏览器css和js兼容性问题汇总

    无论是在工作或者面试中 总会遇到关于浏览器兼容性的问题 往往会感到一头雾水不知从何说起 于是我结合一些工作经验及从网上搜集的一些资料对此做了一些汇总 希望对从事前端工作的朋友们起到一些帮助 css 1 初始化样式 由于浏览器对标签的默认支持