IE點擊子div,父div不獲取焦點問題的解決辦法(二)

上一篇博文,介紹了實現思路,使用var元素來解決問題。

但總覺得很奇怪,用短語元素var去包含div流元素,這本身就是不正確的用法,所以一直在思考能否有更好的解決途徑。

簡單的把問題抽象出來,寫了一個Demo,代碼如下,很簡單。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Test Button</title>
		<style>
			.select-box {
				overflow: visible;
    			/*border: none;*/
    			background: none;
    			position: relative;
    			height: 20px;
    			width: 200px;
    			border: 1px solid #111333;
			}
			.select-area {
				width: 100%;
				height: 40px;
				position: absolute;
				top: 20px;
				border: 1px solid #0000FF;
			}
			.div1, .div2, .div3, .div4 {
				width: 220px;
				height: 400px;
				border: 1px solid #99DB76;
				float: left;
				margin: 0 10px;
			}
			var {
				display: block;
				font-style: normal;
			}
		</style>
	</head>
	<body>
		<p>結論:最終選用section實現,替換原有的var元素,更貼合語義環境。</p>
		<div class="div1">
			<p>div div</p>
			<div class="select-box" tabindex="0" onclick="bclick()" onblur="bblur()">
				<div class="select-area" onclick="divclick()">
					PPPPPP
				</div>
			</div>
		</div>
		<div class="div2">
			<p>var var</p>
			<var class="select-box" tabindex="0" onclick="bclick()" onblur="bblur()">
				<var class="select-area" onclick="divclick()">
					PPPPPP
				</var>
			<var>
		</div>
		<div class="div3">
			<p>button div</p>
			<button class="select-box" onclick="bclick()" onblur="bblur()">
				<div class="select-area" onclick="divclick()">
					PPPPPP
				</div>
			</button>
		</div>
		<div class="div4">
			<p>section section</p>
			<section class="select-box" tabindex="0" onclick="bclick()" onblur="bblur()">
				<section class="select-area" onclick="divclick()">
					PPPPPP
				</section>
			<section>
		</div>

		<script>
			function bclick() {
				console.log('parent click.');
			}
			function divclick() {
				console.log('child click.');
			}
			function bblur() {
				console.log('blurbbbbbblur');
			}
		</script>
	</body>
</html>

可以試一下代碼,剛試了一下jsfiddle,很好用。鏈接 https://jsfiddle.net/yjzb39re/ 

section元素和div一樣都是流元素,同樣僅有display:block的樣式設置,太符合我們的目的了。

總結:理解H5的內容,不夠深入,使用的機會很多,侷限於自己的思維模式,所以要多嘗試新內容,處理問題,解決問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章