Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
次我們來(lái)說(shuō)一下,HTML網(wǎng)頁(yè)中的定位,有很多小伙伴一定好奇,為什么我們寫的代碼都是按順序羅列的而在網(wǎng)頁(yè)的展示效果中,我們的各種樣式,標(biāo)簽,圖片等東西都是出現(xiàn)在網(wǎng)頁(yè)的各個(gè)位置,網(wǎng)頁(yè)看起來(lái)很美觀,各種盒模型擺放合理,這是因?yàn)樵贖TML中有定位的能力,今天我們就來(lái)學(xué)習(xí)一下。
position在英語(yǔ)中是位置的意思,而在我們CSS代碼中position也是跟位置有關(guān)的,position有三個(gè)屬性值分別為relative(相對(duì)定位:相對(duì)于自己原來(lái)的位置進(jìn)行定位,但保留自己原來(lái)的位置,別的元素?zé)o法占用),absolute(絕對(duì)定位:相對(duì)于有定位的父級(jí)進(jìn)行定位,如果沒(méi)有則相對(duì)于文檔進(jìn)行定位,定位會(huì)脫離文檔,不保留原來(lái)的位置,會(huì)和原來(lái)的文檔不在一個(gè)層),fixed(位置定位:他的位置不會(huì)隨著滑輪的滾動(dòng)而改變較常見(jiàn)于彈窗廣告,他也會(huì)脫離文檔流)。
我們說(shuō)完了position,接下來(lái)我們就說(shuō)說(shuō)他是怎么進(jìn)行定位的,我們有l(wèi)eft,top,right,bottom,五個(gè)屬性分別對(duì)應(yīng) 距左邊,距上邊,距右邊,距下邊,大家注意到我在每個(gè)方向前都加了個(gè)距字,我們所做的定位是距各個(gè)方向的距離而不是移動(dòng),例:left:200px,是向右移動(dòng)200像素,他的意思是距離左邊增加200像素。在我們實(shí)際的編程中一般都不常用bottom,我們知道,滑輪是可以一直往下滑的,所以我們相對(duì)于底部定位的話就很困難。
我們來(lái)通過(guò)代碼和結(jié)果來(lái)看一下:
沒(méi)有定位的樣式
加了relative
加了relative的結(jié)果
上面這個(gè)結(jié)果圖看著比例不太對(duì)是因?yàn)樽髡呓貓D沒(méi)截好[捂臉]
我們可以看出貓圖片并沒(méi)有移動(dòng),而是給兔子圖片留著位置。
加了absolute
加了absolute的結(jié)果
這個(gè)結(jié)果我們可以看出貓圖片向前移動(dòng)了,并沒(méi)有保留兔子圖片原來(lái)的位置
加了fixed
代碼中的<br>是為了使滑輪可以滑動(dòng),以便更好的展示效果。
<script src="https://lf3-cdn-tos.bytescm.com/obj/cdn-static-resource/tt_player/tt.player.js?v=20160723"></script>
用了fixed的效果展示。
以上的代碼樣式只對(duì)兔子圖片起作用,我沒(méi)有給貓?zhí)砑尤魏螛邮剑垐D片只是作為參照物。
CSS定位屬性允許你為一個(gè)元素定位。它也可以將一個(gè)元素放在另一個(gè)元素后面,并指定一個(gè)元素的內(nèi)容太大時(shí),應(yīng)該發(fā)生什么。
元素可以使用的頂部,底部,左側(cè)和右側(cè)屬性定位。然而,這些屬性無(wú)法工作,除非是先設(shè)定position屬性。他們也有不同的工作方式,這取決于定位方法。
HTML元素的默認(rèn)值,即沒(méi)有定位,元素出現(xiàn)在正常的流中。
靜態(tài)定位的元素不會(huì)受到top, bottom, left, right影響。
元素的位置相對(duì)于瀏覽器窗口是固定位置。
即使窗口是滾動(dòng)的它也不會(huì)移動(dòng):
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<meta name="viewport" content="width=640, user-scalable=no">
<head>
<style>
p.pos_fixed {
position: fixed;
top: 30px;
right: 5px;
}
</style>
</head>
<body>
<p class="pos_fixed">Some more text</p>
<p><b>Note:</b> 代碼使人進(jìn)步!!!.</p>
<p>Some text</p>
<p>Some text</p>
<p>Some text</p>
<p>Some text</p>
</body>
</html>
注意:
Fixed定位使元素的位置與文檔流無(wú)關(guān),因此不占據(jù)空間。
Fixed定位的元素和其他元素重疊。
相對(duì)定位元素的定位是相對(duì)其正常位置。
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<meta name="viewport" content="width=640, user-scalable=no">
<title> 定位</title>
<head>
<style>
h2.pos_left {
position: relative;
left: -20px;
}
h2.pos_right {
position: relative;
left: 20px;
}
</style>
</head>
<body style="background-color:azure;">
<p>Some more text</p>
<p><b>Note:</b> 代碼使人進(jìn)步!!!.</p>
<h2 class="pos_left">This heading is moved left according to its normal position</h2>
<h2 class="pos_right">This heading is moved right according to its normal position</h2>
</body>
</html>
可以移動(dòng)的相對(duì)定位元素的內(nèi)容和相互重疊的元素,它原本所占的空間不會(huì)改變。
h2.pos_top{
position:relative;
top:-50px;
}
相對(duì)定位元素經(jīng)常被用來(lái)作為絕對(duì)定位元素的容器塊。
絕對(duì)定位的元素的位置相對(duì)于最近的已定位父元素,如果元素沒(méi)有已定位的父元素,那么它的位置相對(duì)于<html>:
h2{
position:absolute;
left:100px;
top:150px;
}
Absolutely定位使元素的位置與文檔流無(wú)關(guān),因此不占據(jù)空間。
Absolutely定位的元素和其他元素重疊。
元素的定位與文檔流無(wú)關(guān),所以它們可以覆蓋頁(yè)面上的其它元素
z-index屬性指定了一個(gè)元素的堆疊順序(哪個(gè)元素應(yīng)該放在前面,或后面)
一個(gè)元素可以有正數(shù)或負(fù)數(shù)的堆疊順序:
img{
position:absolute;
left:0px;
top:0px;
z-index:-1;
}
具有更高堆疊順序的元素總是在較低的堆疊順序元素的前面。
注意: 如果兩個(gè)定位元素重疊,沒(méi)有指定z - index,最后定位在HTML代碼中的元素將被顯示在最前面。
本文基于Html基礎(chǔ),主要介紹了CSS中四種定位的方式。對(duì)于四種的定位表現(xiàn)形式,用豐富的案例 ,代碼效果圖的展示,幫助大家更好理解 。
最后,希望可以幫助大家更好的學(xué)習(xí)CSS3。
前面文章中寫過(guò)類似的文章《手把手教你HTML5實(shí)現(xiàn)根據(jù)LBS定位到商家兩點(diǎn)之間距離多少》,建議有興趣的小伙伴可以看看。
各種瀏覽器對(duì)HTML5 Geolocation 的支持
瀏覽器 版本 只支持HTTPS版本 IE 9+ - Edge 12+ - Firefox 3.5+ - Chrome 5+ 50+ Safari 5+ 39+ iOS Safari 3.2+ 10.2+ Android Browser 2.1+ 56+ Chrome for Android 57+ 57+ UC Browser for Android 11.4+ -
出于安全考慮,部分瀏覽器只允許通過(guò)HTTPS協(xié)議使用 Geolocation API。在HTTP協(xié)議下使用Geolocation API 瀏覽器會(huì)拋出異常,在開(kāi)發(fā)階段,127.0.0.1和localhost 等本地域在兩種協(xié)議下均可使用。
Geolocation API 通過(guò) navigator.geolocation 全局對(duì)象進(jìn)行訪問(wèn),第一次訪問(wèn)的時(shí)候會(huì)詢問(wèn)用戶是否允許共享位置。
判斷瀏覽器是否支持 Geolocation API
// 判斷瀏覽器屬否支持獲取位置
if(navigator.geolocation){
console.log("可以獲取");
}else{
console.log("不支持");
}
實(shí)例代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
獲取用戶地理位置
<input type="button" value="點(diǎn)擊獲取位置" id="btn">
<script>
let btnBtn = document.getElementById('btn')
btnBtn.onclick = () => { // 點(diǎn)擊事件
getAdd()
}
// 成功回調(diào)
let success = (position) => {
console.log(`獲取位置成功:${position.coords}`);
console.log(position.coords); // 獲取坐標(biāo)信息
// coords的常用屬性
console.log(position.coords.latitude); // 獲取坐標(biāo)緯度
console.log(position.coords.longitude); // 獲取坐標(biāo)經(jīng)度
console.log(position.coords.accuracy); // 獲取坐標(biāo)精度,單位為米
console.log(position.timestamp); // 獲取位置的時(shí)間戳
}
// 失敗回調(diào)
let error = (positionErr) => {
console.log(`獲取位置失敗:${positionErr.code}+${positionErr.message}`);
}
let options = {
enableHightAccuracy: false, // 獲取高精度的位置信息,可能會(huì)增加響應(yīng)時(shí)間,默認(rèn)是false
timeout: 30000, // 設(shè)置超時(shí)時(shí)間,單位毫秒,如果到達(dá)設(shè)定的時(shí)間沒(méi)獲取到信息則回觸發(fā)失敗回調(diào),默認(rèn)值為0,無(wú)限大
maximumAge: 0 // 設(shè)置用戶位置信息緩存的最大時(shí)間
}
let getAdd = () => {
navigator.geolocation.getCurrentPosition(success, error, options)
}
// 判斷瀏覽器屬否支持獲取位置
if(navigator.geolocation){
console.log("可以獲取");
}else{
console.log("不支持");
}
</script>
</body>
</html>
當(dāng)獲取位置失敗時(shí),會(huì)調(diào)用失敗回調(diào)(error函數(shù))。返回的參數(shù)<positionErr.code 標(biāo)識(shí)錯(cuò)誤的原因><positionErr.message錯(cuò)誤信息描述> positionErr.code 值
《手把手教你HTML5實(shí)現(xiàn)根據(jù)LBS定位到商家兩點(diǎn)之間距離多少》
作者:藍(lán)海00
鏈接:https://www.jianshu.com/p/d0b0b6120055
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。