微信小程序?qū)崿F(xiàn)IP歸屬地獲取功能
在日常開(kāi)發(fā)中,后端主要提供數(shù)據(jù)以及處理業(yè)務(wù)邏輯,前端主要提供頁(yè)面布局以及數(shù)據(jù)展示。后端程序員對(duì)于頁(yè)面布局接觸比較少,但是小程序有完善的文檔說(shuō)明、頁(yè)面布局也相對(duì)簡(jiǎn)單,實(shí)現(xiàn)起來(lái)相對(duì)簡(jiǎn)單一些。而且小程序相對(duì)于安卓或者IOS審核機(jī)制也相對(duì)簡(jiǎn)單一些。本文介紹如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單獲取IP歸屬地的小程序。
效果展示

頁(yè)面主要有兩個(gè)功能:
- 顯示當(dāng)前IP地址和歸屬地。
- 根據(jù)查詢條件顯示歸屬地。
頁(yè)面布局從上往下分成三部分:

- 第一部分為文字說(shuō)明,介紹頁(yè)面功能。
- 第二部分顯示當(dāng)前IP地址。
- 第三部分顯示查詢的地址結(jié)果。
實(shí)現(xiàn)步驟
將三個(gè)布局從上往下,從上往下依次編寫(xiě),并配置樣式和布局詳解。
頂部展示(第一部分)
實(shí)現(xiàn)效果:

設(shè)置一個(gè)藍(lán)色布局,設(shè)置藍(lán)色背景,寬度為100%,高度為330rpx。
<view style="height: 100%;width: 100%;"> <view style="width: 100%;height: 330rpx;background-color: #6e74dd"> </view> </view>
展示效果:

2、 里面分成兩個(gè)布局,左邊顯示文字,右邊顯示一個(gè)小圖標(biāo)。
- 首先設(shè)置布局左浮動(dòng),
float:left - 左邊文字字體設(shè)置成白色,文字調(diào)整大小和邊距。
- 右邊調(diào)整邊距和大小。
詳情代碼:
# xwml <view class="ip_intro left_float"> <view style="font-size:x-large">IP地址歸屬地</view> <view style="padding-top: 3%;">一鍵查詢 快速方便</view> </view> <view class="left_float intro_icon"> <image style="width: 80px;height: 80px;" src="/images/ip_search.png" mode="heightFix"></image> </view>
# wxss
.left_float {
float: left;
}
.ip_intro {
padding-left: 5%;
padding-top: 10%;
color: white;
}
.intro_icon {
padding-left: 25%;
margin-top: 8%;
}效果展示:

中間展示(第二部分)
實(shí)現(xiàn)效果:

- 首先
view設(shè)置寬度90%,高度自適應(yīng),背景調(diào)整成白色。整體往上移動(dòng),部分覆蓋在第一部分藍(lán)色背景上。 - 左側(cè)設(shè)置
view設(shè)置導(dǎo)航條,設(shè)置上下寬,左右窄的布局。 - 右側(cè)調(diào)整邊距和顯示自提大小。
- 請(qǐng)求
IP歸屬地信息,請(qǐng)求地址www.jeremy7.cn/springboot-schedule/holiday/ip-address。
詳情代碼:
# wxml
<view class="clean_float local_div">
<view class="left_float">
<view class="local_bar"></view>
</view>
<view class="left_float local_text">
<view>當(dāng)前IP地址:{{localIp}}</view>
<view style="margin-top: 12rpx;">歸屬地:{{localAddress}}</view>
</view>
</view>
# wxss
.clean_float {
clear:both;
}
.local_div {
width: 90%;
height: 130rpx;
margin: 0 auto;
background-color: #ffffff;
margin-top: -10%;
border-radius: 10px;
}
.local_bar {
margin-left: 30rpx;
margin-top: 50rpx;
border-radius: 2px;
width: 8rpx;
height: 50rpx;
background-color: #6e74dd;
}
.local_text {
font-size: small;
margin-left: 25rpx;
margin-top: 35rpx;
}
# js
data: {
localIp: "---",
localAddress: "---"
}
var that = this;
wx.request({
url: "htts://www.jeremy7.cn/springboot-schedule/holiday/ip-address",
success (res){
var data = res.data;
that.setData({
localAddress:data.address,
localIp:data.ip
})
}
})效果展示:

尾部部分(第三部分)
實(shí)現(xiàn)效果:

尾部部分是IP歸屬地的查詢,根據(jù)用戶輸入的IP查詢歸屬地。
- 整個(gè)最大的
view寬度90%,背景設(shè)置成白色,調(diào)整高度和圓角。 - 最上面設(shè)置文字說(shuō)明,設(shè)置邊距和字體大小。
- 中間輸入框,設(shè)置文字居中,需要將行高和高度設(shè)置成相同的高度
height: 78rpx; line-height:78rpx;。 - 按查詢按鈕調(diào)整間距,高度以及圓角。
- 請(qǐng)求
IP歸屬地信息,請(qǐng)求地址www.jeremy7.cn/springboot-schedule/holiday/ip-address,傳入查詢的IP。
詳情代碼如下:
# wxml
<view class="ip_find">
<view class="ip_find_text">IP歸屬地查詢</view>
<view>
<input class="ip_input" type="text" bindinput="changeIp"/>
</view>
<view class="ip_find_btn">
<view bindtap="findAddress">查詢</view>
</view>
<view class="result_div" wx:if="{{showResult}}">
<view class="left_float">
<view class="local_bar"></view>
</view>
<view class="left_float local_text">
<view>當(dāng)前IP地址:{{resultIp}}</view>
<view style="margin-top: 12rpx;">歸屬地:{{resultAddress}}</view>
</view>
</view>
</view>
# wxss
.ip_find {
width: 90%;
height: 700rpx;
margin: 0 auto;
background-color: #ffffff;
margin-top: 20px;
border-radius: 10px;
}
.ip_input {
height: 78rpx;
background-color: #F5F5F5;
width: 90%;
margin: 30rpx auto;
border-radius: 24px;
text-align: center;
line-height:78rpx;
}
.ip_find_text {
padding-top: 28px;
padding-left: 20px;
font-weight: bolder;
}
.ip_find_btn {
height: 78rpx;
background-color: #6e74dd;
width: 90%;
margin: 0 auto;
border-radius: 24px;
text-align: center;
line-height:78rpx;
}
# js
findAddress() {
var that = this;
var searchIp = this.data.searchIp;
console.log(searchIp);
var valid = that.isValidIP(searchIp);
if(!valid) {
wx.showToast({
title: "請(qǐng)?zhí)顚?xiě)正確 IP",
icon: 'none',
duration: 2000
})
return;
}
that.searchAddress(searchIp);
},
searchAddress(searchIp) {
var that = this;
wx.request({
url: "htts://www.jeremy7.cn/springboot-schedule/holiday/ip-address",
data: {
ip:searchIp
},
success (res){
var data = res.data;
var data = res.data;
that.setData({
resultAddress:data.address,
resultIp:data.ip,
showResult:true
})
}
})
},
// 驗(yàn)證 IP 規(guī)格合法
isValidIP(ip) {
var reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
return reg.test(ip);
},
changeIp: function (e){
this.setData({
searchIp: e.detail.value
})
},changeIp每次輸入數(shù)據(jù)實(shí)時(shí)傳遞給searchIp變量。isValidIP驗(yàn)證IP的合法性。- 結(jié)果展示使用
showResult判斷,查詢成功后showResult改成true,使用wx:if顯示結(jié)果數(shù)據(jù)。 效果展示:

總結(jié)
從上、中、下三個(gè)部分分別講解頁(yè)面的布局。
整體布局主要是需要設(shè)置寬度,一般設(shè)置成90%的寬度,高度自適應(yīng)。
視圖之間的布局主要調(diào)整邊距、修改大小。
文字上下居中需要設(shè)置height和line-height改成一致。
整體布局需要顏色統(tǒng)一,看起來(lái)簡(jiǎn)潔、大方。
后端程序?qū)η岸瞬皇煜?,但是多多練?xí)一些標(biāo)簽的使用,上手還是很快的。
小程序展示
打開(kāi)微信掃一掃,查看你的IP歸屬地:

到此這篇關(guān)于微信小程序?qū)崿F(xiàn)IP歸屬地獲取功能的文章就介紹到這了,更多相關(guān)小程序IP歸屬地獲取內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
BootStrap daterangepicker 雙日歷控件
這篇文章主要介紹了BootStrap daterangepicker 雙日歷控件,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-06-06
js將URL網(wǎng)址轉(zhuǎn)為16進(jìn)制加密與解密函數(shù)
這篇文章主要介紹了js將URL網(wǎng)址轉(zhuǎn)為16進(jìn)制加密與解密函數(shù),很多朋友喜歡將網(wǎng)址轉(zhuǎn)換為16進(jìn)制,網(wǎng)上實(shí)在找不到轉(zhuǎn)換為\x這樣的工具,于是手工改一下2020-03-03
JavaScript預(yù)編譯的基本概念和過(guò)程詳解
JavaScript在執(zhí)行代碼前,會(huì)進(jìn)行一個(gè)預(yù)編譯的過(guò)程,這個(gè)過(guò)程主要用于處理變量和函數(shù)聲明,預(yù)編譯分為全局預(yù)編譯和函數(shù)預(yù)編譯,本文將給大家詳細(xì)的介紹一下JavaScript預(yù)編譯的基本概念和過(guò)程,需要的朋友可以參考下2024-05-05
JavaScript實(shí)現(xiàn)密碼強(qiáng)度實(shí)時(shí)驗(yàn)證
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)密碼強(qiáng)度實(shí)時(shí)驗(yàn)證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03
JS中實(shí)現(xiàn)簡(jiǎn)單Formatter函數(shù)示例代碼
JS沒(méi)有提供方便使用的Formatter函數(shù),用字符拼接的方式看起來(lái)混亂難讀,下面是JS簡(jiǎn)單實(shí)現(xiàn)版本(沒(méi)有嚴(yán)格測(cè)試)2014-08-08
帶你領(lǐng)略O(shè)bject.assign()方法的操作方式
這篇文章主要介紹了帶你領(lǐng)略O(shè)bject.assign()方法的操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
JavaScript通過(guò)mouseover()實(shí)現(xiàn)圖片變大效果的示例
下面小編就為大家分享一篇JavaScript通過(guò)mouseover()實(shí)現(xiàn)圖片變大效果的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助2017-12-12
JavaScript常用正則驗(yàn)證函數(shù)實(shí)例小結(jié)【年齡,數(shù)字,Email,手機(jī),URL,日期等】
這篇文章主要介紹了JavaScript常用正則驗(yàn)證函數(shù),結(jié)合實(shí)例形式總結(jié)分析了javascript針對(duì)年齡、數(shù)字、Email、手機(jī)、URL、日期等格式常用正則驗(yàn)證技巧,需要的朋友可以參考下2017-01-01

