CSS中的未定義行為,瀏覽器的差異(一)

今天看了張鑫旭大佬的新書的有感吧,記錄一下。

Web標準未對一些場景做出明確規范,所以各大瀏覽器廠家只能根據自己的理解和喜好去實現,表現差異不是瀏覽器的bug,用計算機領域的術語描述為"未定義行為"。

比如一個例子:
CSS中的一個偽類,最常用的一個偽類:active,鼠標按下,執行改偽類對應的CSS樣式,鼠標抬起還原。

但是這種情況呢:

<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><style>.active-btn {display: inline-block; background-color: #cd0000;}.active-btn:active {background-color: #ae0000;}</style></head>
<body><a href="javascript:" class="active-btn">按下</a><a href="javascript:" id="button" class="active-btn">按下</a><script>var button = document.getElementById("button");if (button.addEventListener) {button.addEventListener("mousedown", function(event) {// 此處省略N行event.preventDefault();    });}      </script>
</body>
</html>

也就是鼠標按下的時候,阻止按鈕的默認行為,這樣設置可以讓拖動效果更流暢。

但是在Fiewfox瀏覽器中的:active陣亡了,而IE和Chrome的:active正常變紅,符合預期。

原因就是規范上并沒有對這種場景的具體描述,所以Firefox認為:active發生在mousedown事件之后。

然后我提了這個問題:
這里寫圖片描述
有大佬回答:
這里寫圖片描述

轉載于:https://www.cnblogs.com/zhangmingzhao/p/8505517.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255326.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255326.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255326.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

KVC 和 KVO

作者 沖破繭縛 2015.08.28 16:12* 寫了3967字&#xff0c;被8人關注&#xff0c;獲得了14個喜歡KVC 和 KVO 字數363 閱讀32 評論0 喜歡0KVC (Key Value Coding)&#xff0c;鍵值編碼&#xff0c;通過鍵值&#xff08;字符串&#xff09;來訪問屬性的機制&#xff0c;來間接修改…

Atmel megaAVR控制器 串行引導Bootloader

開始研究下Bootloader的代碼結構 2015.1.9 粗略看了下&#xff0c;Bootloader主要做了下板卡的初始化 -----> 然后進入for( ; ; )死循環 -----> 循環刷新串口數據 -----> 根據數據做出不同應答 -----> 如果有寫數據&#xff0c;則將數據存入buffer …

MapReduce入門2-流量監控

3、流量監控匯總&#xff08;使用LongWritable實現&#xff09; hdfs文件路徑&#xff1a;/tmp/flow.txt 查看文件內容&#xff1a; 13770759991 50 100 25 400 13770759991 800 600 500 100 13770759992 400 300 250 1400 13770759992 800 1200 600 900字符串含義&#xff1a;…

【fiddler學習問題記錄】——手機端證書下載頁打不開、無法將此證書安裝(已解決)

目錄 1、手機端下載頁打不開 解決方法1&#xff09;電腦端——將網絡設置成公用&#xff08;親測有效&#xff09; 解決方法2&#xff09;手機端將fiddler設置為信任應用&#xff0c;不被攔截 &#xff08;未試&#xff09; 2、無法將此證書安裝 方法一&#xff1a;修改證書…

HALCON示例程序ball電路板焊點識別、檢測、測量程序剖析

HALCON示例程序ball電路板焊點識別、檢測、測量程序剖析 示例程序源碼&#xff08;加注釋&#xff09; 介紹&#xff1a; ball.hdev: Inspection of Ball Bonding *halcon窗口實時更新關閉 dev_update_window (‘off’) *halcon關閉所有窗口 dev_close_window () *halcon打開…

舵機的原理和控制

控制信號由接收機的通道進入信號調制芯片&#xff0c;獲得直流偏置電壓。它內部有一個基準電路&#xff0c;產生周期為20ms&#xff0c;寬度為1.5ms的基準信號&#xff0c;將獲得的直流偏置電壓與電位器的電壓比較&#xff0c;獲得電壓差輸出。最后&#xff0c;電壓差的正負輸出…

HDFS清理壞塊

報錯 Failed with exception java.io.IOException:org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-1921057509-192.168.57.129-1517160177567:blk_1073741930_1106 file/user/hive/warehouse/db_hive.db/student/student.txt Time taken: 0.104 se…

如何在PowerDesigner將PDM導出生成WORD文檔或者html文件

a) 使用PowerDesigner打開pdm文件 b) 點擊Report Temlates 制作模板 點擊PowerDesigner菜單欄“Report” -> “Report Templates” c) 選擇模板數據項 完成步驟a&#xff09;&#xff0c;得到如下界面&#xff0c;左右2個區&#xff0c;Aavailable區…

【軟件測試】——基礎篇(軟件測試技術體系、過程管理)

目錄 軟件測試技術體系 軟件測試過程管理?編輯 接口測試用例設計 手機端測試流程?編輯 軟件測試技術體系 軟件測試過程管理 接口測試用例設計 手機端測試流程

vue 的常用模塊安指令(持續記錄)

# 全局安裝 vue-cli $ cnpm install --global vue-cli# 創建一個基于 webpack 模板的新項目 $ vue init webpack my-project # 路由管理模塊 $ npm install vue-router --save # 狀態管理模塊 $ npm install vuex --save # 網絡請求模塊 $ npm install vue-resource --save # 停…

HALCON基于形狀匹配詳解

HALCON基于形狀的模板匹配詳細說明 很早就想總結一下前段時間學習HALCON的心得&#xff0c;但由于其他的事情總是抽不出時間。去年有過一段時間的集中學習&#xff0c;做了許多的練習和實驗&#xff0c;并對基于HDevelop的形狀匹配算法的參數優化進行了研究&#xff0c;寫了一…

俄羅斯:自由軟件在這里生根

2008年6月15日&#xff0c;我在“俄羅斯&#xff1a;自由軟件在這里起飛“一文中介紹了自由軟件在俄羅斯的發展情況。現在&#xff0c;許多年過去了&#xff0c;實際情況如何呢&#xff1f; 回顧以往&#xff0c;俄羅斯境內自由軟件的精英們&#xff0c;在2001年組建了ALTLinux…

小米出招黑科技,5S或成全球首款”Under glass“指紋識別手機

這一次&#xff0c;小米PK蘋果&#xff0c;小米勝。 不得不說&#xff0c;最近的手機圈真是熱鬧&#xff0c;繼三星Note 7爆炸、蘋果iPhone 7發布一度成為新聞熱點之后&#xff0c;小米又來暗戳戳地搶風頭了。 最近小米即將發布的兩款新旗艦消息扎堆&#xff0c;其中基本已經確…

sql中實現取得某字段中數字值

ALTER function [dbo].[GetNum](a nvarchar(4000)) returns nvarchar(4000) as begin while patindex(%[^0-9]%,a)>0 begin set astuff(a,patindex(%[^0-9]%,a),1,) end--select a --299 return a end 例如: 轉載于:https://www.cnblogs.com/fish-ycq/p/6433562.ht…

Java 中 String 的常用方法(二)

本文介紹剩下的一些常用的 String 中的方法。 1、replace 方法 、replaceFirst 方法和 replaceAll 方法 replace(char oldChar, char newChar)Returns a string resulting from replacing all occurrences of oldChar in this string with newChar. replace(CharSequence targe…

【adb錯誤修復】adb version(39) doesn‘t match the client(40),killing...

問題原因&#xff1a; 由于服務端的adb版本和客戶端的adb版本不一樣【哪個是客戶端哪個是服務端我也不清楚】 解決方法&#xff1a; adb kill-serveradb start-server

HALCON示例程序ball電路板焊點識別、檢測、測量程序2剖析(與上篇文章使用了不同方法)

HALCON示例程序ball電路板焊點識別、檢測、測量程序2 示例程序源碼&#xff08;加注釋&#xff09; *這是關于顯示的函數&#xff0c;已經介紹過了 dev_update_off () *定義一個字符串變量ImageNames&#xff0c;ImageNames[0]的含義為’die/die_02’以此類推 ImageNames : ‘…

arduino 程序的機制

從一個簡單的 arduino 程序說起&#xff1a; /*BlinkTurns on an LED on for one second, then off for one second, repeatedly.This example code is in the public domain.*/// Pin 13 has an LED connected on most Arduino boards. // give it a name: int led 13;// the…

電池技術多年沒有較大發展,成為移動設備最大制約

各大廠商致力于發展閃充技術以此解決電池續航問題。 對于電子產品來說&#xff0c;不管是什么&#xff0c;我們最頭疼的無疑就是電池問題了。而電池的重要性更是不用多說&#xff0c;但是&#xff0c;以目前的科技水平來看&#xff0c;就拿智能手機的CPU等功能來說&#xff0c…

什么樣的數據應該放入緩存

把數據放入緩存,有三個標準: 1.數據量不大 2.訪問頻率高 3.數據更改頻率低轉載于:https://www.cnblogs.com/hwgok/p/5494915.html