意這不僅僅是一套程序,而是贈送助你日入斗金的運營資源
現特價活動優惠購,趕緊抓住這波紅利!
附詳細搭建教程,贈送運營資料:SEO教程,友鏈交換,站長提交收錄,優化推廣聯盟,自媒體等各大優質運營平臺
(自適應手機端)響應式相冊圖片網站模板 圖片壁紙類網站源碼下載
PbootCMS內核開發的網站模板,該模板適用于相冊圖片、圖片壁紙類等企業,當然其他行業也可以做,只需要把文字圖片換成其他行業的即可;
自適應移動端,同一個后臺,數據即時同步,簡單適用!附帶測試數據!
友好的seo,所有頁面均都能完全自定義標題/關鍵詞/描述,PHP程序(php≥7.0,<8.0),安全、穩定、快速;用低成本獲取源源不斷訂單!
后臺:域名/admin.php
賬號:admin
密碼:admin
注:為了演示數據正常和完整,演示站不開放后臺測試,請下載后自行安裝測試,效果和演示站一樣。
演示地址:http://demo2.92wailian.com/k492/
全部演示站點:http://pbootcms.demonet.com.cn/
模板特點
1:手工書寫DIV+CSS、代碼精簡無冗余。
2:自適應結構,全球先進技術,高端視覺體驗。
3:SEO框架布局,欄目及文章頁均可獨立設置標題/關鍵詞/描述。
4:附帶測試數據、安裝教程、入門教程、安全及備份教程。
5:后臺直接修改聯系方式、傳真、郵箱、地址等,修改更加方便。
手機版圖片預覽:
電腦版圖片預覽:
果圖
各位媛猿大家好
今天給大家帶來的是 CSS3 3D圖片相冊特效
大家可以按照自己的意愿 修改成喜歡的樣子!
廢話不多說,上源碼!
@charset "utf-8";
/*科e互聯特效基本框架CSS*/
body, ul, dl, dd, dt, ol, li, p, h1, h2, h3, h4, h5, h6, textarea, form, select, fieldset, table, td, div, input {margin:0;padding:0;-webkit-text-size-adjust: none}
h1, h2, h3, h4, h5, h6{font-size:12px;font-weight:normal}
body>div{margin:0 auto}
div {text-align:left}
a img {border:0}
body { color: #333; text-align: center; font: 12px "微軟雅黑"; }
ul, ol, li {list-style-type:none;vertical-align:0}
a {outline-style:none;color:#535353;text-decoration:none}
a:hover { color: #D40000; text-decoration: none}
.clear{height:0; overflow:hidden; clear:both}
.button {display: inline-block;zoom: 1; *display: inline;vertical-align: baseline;margin: 0 2px;outline: none;cursor: pointer;text-align: center;text-decoration: none;font: 14px/100% Arial, Helvetica, sans-serif;padding:0.25em 0.6em 0.3em;text-shadow: 0 1px 1px rgba(0,0,0,.3);-webkit-border-radius: .5em; -moz-border-radius: .5em;border-radius: .5em;-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2);-moz-box-shadow: 0 1px 2px rgba(0,0,0,.2);box-shadow: 0 1px 2px rgba(0,0,0,.2);
}
.red {color: #faddde;border: solid 1px #980c10;background: #d81b21;background: -webkit-gradient(linear, left top, left bottom, from(#ed1c24), to(#A51715));background: -moz-linear-gradient(top, #ed1c24, #A51715);filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ed1c24', endColorstr='#aa1317');
}
.red:hover { background: #b61318; background: -webkit-gradient(linear, left top, left bottom, from(#c9151b), to(#a11115)); background: -moz-linear-gradient(top, #c9151b, #a11115); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#c9151b', endColorstr='#a11115'); color:#fff;}
.red:active {color: #de898c;background: -webkit-gradient(linear, left top, left bottom, from(#aa1317), to(#ed1c24));background: -moz-linear-gradient(top, #aa1317, #ed1c24);filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#aa1317', endColorstr='#ed1c24');}
.cor_bs,.cor_bs:hover{color:#ffffff;}
.keBody{background:url(../images/bodyBg.jpg) repeat #333;}
.keTitle{height:100px; line-height:100px; font-size:30px; font-family:'微軟雅黑'; color:#FFF; text-align:center; background:url(../images/bodyBg3.jpg) repeat-x bottom left; font-weight:normal}
.kePublic{background:#FFF; padding:50px;}
.keBottom{color:#FFF; padding-top:25px; line-height:28px; text-align:center; font-family:'微軟雅黑'; background:url(../images/bodyBg2.jpg) repeat-x top left; padding-bottom:25px}
.keTxtP{font-size:16px; color:#ffffff;}
.keUrl{color:#FFF; font-size:30px;}
.keUrl:hover{ text-decoration: underline; color: #FFF; }
.mKeBanner,.mKeBanner div{text-align:center;}
/*科e互聯特效基本框架CSS結束,應用特效時,以上樣式可刪除*/
.warper{ width: 860px; height: 300px; border: 2px solid #efefef; margin: 0 auto; padding: 3px 3px 0px 0px; }
#wowslider-container1 { zoom: 1; position: relative; max-width: 716px; float:right; z-index: 90 }
* html #wowslider-container1 { width: 716px }
#wowslider-container1 .ws_images ul { position: relative; width: 10000%; height: auto; left: 0; list-style: none; margin: 0; padding: 0; border-spacing: 0; overflow: visible }
#wowslider-container1 .ws_images ul li { width: 1%; line-height: 0; float: left; font-size: 0; padding: 0!important; margin: 0!important }
#wowslider-container1 .ws_images { position: relative; left: 0; top: 0; width: 100%; height: 100%; overflow: hidden }
#wowslider-container1 .ws_images a { width: 100%; display: block; color: transparent }
#wowslider-container1 img { max-width: none!important }
#wowslider-container1 .ws_images img { width: 100%; border: none 0; max-width: none; padding: 0; margin: 0 }
#wowslider-container1 a { text-decoration: none; outline: 0; border: 0 }
#wowslider-container1 a.ws_next, #wowslider-container1 a.ws_prev { position: absolute; display: none; top: 50%; margin-top: -3.5em; z-index: 60; height: 7.1em; width: 7.1em; background-image: url(../images/arrows.png); background-size: 200% }
#wowslider-container1 a.ws_next { background-position: 100% 0; right: 1em }
#wowslider-container1 a.ws_prev { left: 1em; background-position: 0 0 }
#wowslider-container1 a.ws_next:hover { background-position: 100% 100% }
#wowslider-container1 a.ws_prev:hover { background-position: 0 100% }
* html #wowslider-container1 a.ws_next, * html #wowslider-container1 a.ws_prev { display: block }
#wowslider-container1:hover a.ws_next, #wowslider-container1:hover a.ws_prev { display: block }
#wowslider-container1 .ws_playpause { display: none; width: 7.1em; height: 7.1em; position: absolute; top: 50%; left: 50%; margin-left: -3.5em; margin-top: -3.5em; z-index: 59; background-size: 100% }
#wowslider-container1:hover .ws_playpause { display: block }
#wowslider-container1 .ws_pause { background-image: url(../images/pause.png) }
#wowslider-container1 .ws_play { background-image: url(../images/play.png) }
#wowslider-container1 .ws_pause:hover, #wowslider-container1 .ws_play:hover { background-position: 100% 100%!important }
#wowslider-container1 .ws-title { position: absolute; display: block; bottom: 3.5em; left: 1em; margin-right: 1em; padding: 1em .9em .9em .9em; background-color: rgba(0,0,0,0.4); color: #fff; z-index: 50; font-weight: bold; text-transform: uppercase; border-radius: .2em; -moz-border-radius: .2em; -webkit-border-radius: .2em }
#wowslider-container1 .ws-title div { margin-top: .3em; font-size: 1.6em; line-height: 1.15em; font-weight: normal; text-transform: none; color: #fff }
#wowslider-container1 .ws-title span { font-size: 2.4em }
#wowslider-container1 .ws_thumbs { font-size: 0; position: absolute; overflow: auto; z-index: 70; left: -19.51%; top: 0; width: 18.72%; height: 100% }
#wowslider-container1 .ws_thumbs img { text-decoration: none; border: 0; width: 100% }
#wowslider-container1 .ws_thumbs a { position: relative; text-indent: -4000px; color: transparent; opacity: .85; text-decoration: none; display: inline-block; border: 0; margin-bottom: 4%; text-indent: 0; padding: 2.99%; width: 89.54%; background-color: #fff }
#wowslider-container1 .ws_thumbs a:hover { opacity: 1 }
#wowslider-container1 .ws_thumbs a:hover img { visibility: visible }
#wowslider-container1 .ws_thumbs div { position: relative; width: 100% }
#wowslider-container1 .ws_thumbs a.ws_selthumb { background-color: #bce0dd }
#wowslider-container1 .ws_images ul { animation: wsBasic 16s infinite; -moz-animation: wsBasic 16s infinite; -webkit-animation: wsBasic 16s infinite }
@keyframes wsBasic { 0% {
left:-0%
}
12.5% {
left:-0%
}
25% {
left:-100%
}
37.5% {
left:-100%
}
50% {
left:-200%
}
62.5% {
left:-200%
}
75% {
left:-300%
}
87.5% {
left:-300%
}
}
@-moz-keyframes wsBasic { 0% {
left:-0%
}
12.5% {
left:-0%
}
25% {
left:-100%
}
37.5% {
left:-100%
}
50% {
left:-200%
}
62.5% {
left:-200%
}
75% {
left:-300%
}
87.5% {
left:-300%
}
}
@-webkit-keyframes wsBasic { 0% {
left:-0%
}
12.5% {
left:-0%
}
25% {
left:-100%
}
37.5% {
left:-100%
}
50% {
left:-200%
}
62.5% {
left:-200%
}
75% {
left:-300%
}
87.5% {
left:-300%
}
}
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>CSS3 3D圖片相冊特效 - 網頁特效庫 - jquery特效</title>
<link rel='stylesheet' href='css/style.css' type='text/css' />
<script type='text/javascript' src='js/jquery.min.js'></script>
</head>
<body class="keBody">
<h1 class="keTitle">CSS3 3D圖片相冊特效</h1>
<div class="kePublic">
<!--效果html開始-->
<div class="warper">
<div id="wowslider-container1">
<div class="ws_images">
<ul>
<li><a target="_blank" href="#"><img title="高級職位都在這里" src="images/bimg1.jpg" /></a></li>
<li><a target="_blank" href="#"><img title="互聯網設計布道者馮鐵看診把脈" src="images/bimg2.jpg" /></a></li>
<li><a target="_blank" href="#"><img title="顏值不高別裝“表”" src="images/bimg3.jpg" /></a></li>
<li><a target="_blank" href="#"><img title="高級職位都在這里" src="images/bimg1.jpg" /></a></li>
<li><a target="_blank" href="#"><img title="互聯網設計布道者馮鐵看診把脈" src="images/bimg2.jpg" /></a></li>
<li><a target="_blank" href="#"><img title="顏值不高別裝“表”" src="images/bimg3.jpg" /></a></li>
</ul>
</div>
<div class="ws_thumbs">
<div>
<a target="_blank" href="#"><img src="images/simg1.jpg" /></a>
<a target="_blank" href="#"><img src="images/simg2.jpg" /></a>
<a target="_blank" href="#"><img src="images/simg3.jpg" /></a>
<a target="_blank" href="#"><img src="images/simg1.jpg" /></a>
<a target="_blank" href="#"><img src="images/simg2.jpg" /></a>
<a target="_blank" href="#"><img src="images/simg3.jpg" /></a>
</div>
</div>
<div class="ws_shadow"></div>
</div>
<script type="text/javascript" src="js/slider.js"></script>
</div>
<!--效果html結束-->
<div class="clear"></div>
</div>
<div style="text-align:center;margin:10px 0; font:normal 14px/24px 'MicroSoft YaHei'; color: #fff;">
<p>T</p>
</div>
</body>
</html>
者 | End_less_,責編 | 夕顏
來源 | CSDN博客
頭圖 | CSDN 下載自視覺中國
出品 | CSDN(ID:CSDNnews)
前言
今天,我們來學習一下如何使用vue進行微信小程序的搭建,感受一下使用Vue做小程序的魔力。
生命周期
1. Vue的生命周期
什么是Vue生命周期?簡單來說,Vue 實例從創建到銷毀的過程,就是生命周期。從開始創建、初始化數據、編譯模板、掛載Dom→渲染、更新→渲染、銷毀等一系列過程,稱之為 Vue 的生命周期。Vue生命周期的作用,在于它的生命周期中有多個事件鉤子,讓我們在控制整個Vue實例的過程時更容易形成好的邏輯。
2. 微信小程序頁面生命周期
3. uni-app生命周期
1. 應用生命周期
當使用uni-app進行項目的創建的時候,會在入口文件App.vue中自動生成應用生命周期的大致結構:
2. 頁面生命周期
具體內容可看官網文檔 :uni-app 生命周期(https://uniapp.dcloud.io/frame?id=%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F)
項目搭建
項目使用的編輯器:VSCode,微信開發者工具,node環境,vue環境…
1. 創建項目
使用命令行:
vue create -p dcloudio/uni-preset-vue projectName
其中 projectName是項目名稱,可自定義。
由于使用的是scss樣式,需要安裝sass-loader插件
命令行:npm i sass-loader node-sass,如果一直下載不成功,建議使用淘寶鏡像。
2. 在微信小程序開發工具導入項目
首先使用命令行:npm run dev:mp-weixin,運行項目
3. 使用VSCode進行項目編寫
當第二步完成之后,將項目文件夾在VSCode中打開,即可進行項目的編寫。
項目結構
關于Vue知識,你需要了解哪些?
具體可看博客 --> Vue Knowledge(https://blog.csdn.net/Ms_yjk/article/details/104748084)
關于此項目微信小程序開發,你必須知道的知識
1. 如何將數據掛載在全局?
1.使用Vue原型進行數據掛載
例如:
Vue.prototype.testData="test"
//輸出
onLoad{
console.log(this.testData) //"test"
}
2.getApp.globalData
var app=getApp;
console.log(app.globalData.helloFromApp); // 調用全局變量
app.test; // 調用全局方法
2. image中的mode屬性
在實現微信小程序時,肯定會處理圖片的一些事件,縮略圖,原圖,顯示樣式等等都是需要考慮的。
3. 如何模擬觸屏事件?
大致思路:
給容器綁定兩個觸屏事件 touchstart 和 touchend
用戶按下屏幕事件
a. 記錄用戶按下屏幕的時間 Date.now 時間戳 返回 1970 -1-1 到現在的毫秒數
b. 記錄用戶按下屏幕的坐標 x 和 y
用戶離開屏幕事件
記錄用戶離開屏幕的時間 Date.noew
記錄用戶離開屏幕的坐標 x 和 y
根據兩個時間 運算 判斷 用戶按下屏幕時長是否合法
根據兩對坐標 判斷距離是否合法 判斷 滑動的方向
4. 微信小程序輪播圖如何實現?
一些基礎知識:
1. 自動輪播 autoplay
2. 指示器 indicator-dots
3. 銜接輪播 circular
4. swiper標簽 默認的高度是150px
5. image標簽默認的寬度320px=> 基本樣式中重置了100%
默認的高度240px
6. 要計算圖片的寬度和高度的比例 圖片的寬度/高度
7. 把圖片的比例也寫到swiper標簽樣式中去
8. swiper-item 默認寬高是繼承父元素的100%
更多相關知識可以在官方文檔中進行查看 scroll-view 微信開放文檔
5. 如何在微信小程序中實現Promise請求?
眾所周知,在微信小程序中,其原生語言是不支持promise請求的。同時,uni-app的請求不能夠方便的添加 “請求中” 效果,并且其返回值是一個數組。
封裝思路
1.基于原生的promise進行封裝
創建request.js文件:
//ES6
export default (params)=> {
// 加載中
uni.showLoading({
title: "Loading..."
})
return new Promise((resolve, reject)=> {
wx.request({
...params,
success (res) {
resolve(res.data);
},
fail (err) {
reject(err)
},
complete {
uni.hideLoading
}
})
})
}
2.將其掛載在Vue的原型上
3.通過this.request的方式進行請求
每次進行獲取頁面數據請求中,直接使用this.request進行請求數據,例如:
6. 如何下載文件到本地?
1.函數介紹
1. uni.downloadFile(OBJECT)
下載文件資源到本地,客戶端直接發起一個 HTTP GET 請求,返回文件的本地臨時路徑。
在各個小程序平臺運行時,網絡相關的 API 在使用前需要配置域名白名單。
OBJECT 參數說明
注:文件的臨時路徑,在應用本次啟動期間可以正常使用,如需持久保存,需在主動調用uni.saveFile,才能在應用下次啟動時訪問得到。
success 返回參數說明
注意:網絡請求的超時時間可以統一在 manifest.json 中配置 networkTimeout。
2. uni.saveImageToPhotosAlbum(OBJECT)
保存圖片到系統相冊。
平臺差異說明
OBJECT 參數說明
success 返回參數說明
注意
可以通過用戶授權API來判斷用戶是否給應用授予相冊的訪問權限https://uniapp.dcloud.io/api/other/authorize
H5沒有API可觸發保存到相冊行為,下載圖片時瀏覽器會詢問圖片存放地址。
具體的一些屬性和方法可閱讀官方文檔 uni-app
2.如何實現?
項目實現中,本人遇到的bug和一些注意問題
頁面不顯示
查看pages.json是否添加了相關的頁面以及配置。
關于flex布局,圖片顯示的問題
論壇發布過這個問題:uni-app創建微信小程序 flex布局問題(https://bbs.csdn.net/topics/396522643)
moment.js 中英文轉換
報錯信息:
但是在node_modules中可以找到文件:
解決方法
1.
import moment from 'moment'
moment.locale('zh-cn')
2.
import moment from 'moment'
import 'moment/locale/zh-cn'
3.
moment.locale('zh-cn', {
months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
longDateFormat: {
LT: 'Ah點mm分',
LTS: 'Ah點m分s秒',
L: 'YYYY-MM-DD',
LL: 'YYYY年MMMD日',
LLL: 'YYYY年MMMD日Ah點mm分',
LLLL: 'YYYY年MMMD日ddddAh點mm分',
l: 'YYYY-MM-DD',
ll: 'YYYY年MMMD日',
lll: 'YYYY年MMMD日Ah點mm分',
llll: 'YYYY年MMMD日ddddAh點mm分'
},
meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
meridiemHour: function (h, meridiem) {
let hour=h;
if (hour===12) {
hour=0;
}
if (meridiem==='凌晨' || meridiem==='早上' ||
meridiem==='上午') {
return hour;
} else if (meridiem==='下午' || meridiem==='晚上') {
return hour + 12;
} else {
// '中午'
return hour >=11 ? hour : hour + 12;
}
},
meridiem: function (hour, minute, isLower) {
const hm=hour * 100 + minute;
if (hm < 600) {
return '凌晨';
} else if (hm < 900) {
return '早上';
} else if (hm < 1130) {
return '上午';
} else if (hm < 1230) {
return '中午';
} else if (hm < 1800) {
return '下午';
} else {
return '晚上';
}
},
calendar: {
sameDay: function {
return this.minutes===0 ? '[今天]Ah[點整]' : '[今天]LT';
},
nextDay: function {
return this.minutes===0 ? '[明天]Ah[點整]' : '[明天]LT';
},
lastDay: function {
return this.minutes===0 ? '[昨天]Ah[點整]' : '[昨天]LT';
},
nextWeek: function {
let startOfWeek, prefix;
startOfWeek=moment.startOf('week');
prefix=this.diff(startOfWeek, 'days') >=7 ? '[下]' : '[本]';
return this.minutes===0 ? prefix + 'dddAh點整' : prefix + 'dddAh點mm';
},
lastWeek: function {
let startOfWeek, prefix;
startOfWeek=moment.startOf('week');
prefix=this.unix < startOfWeek.unix ? '[上]' : '[本]';
return this.minutes===0 ? prefix + 'dddAh點整' : prefix + 'dddAh點mm';
},
sameElse: 'LL'
},
ordinalParse: /\d{1,2}(日|月|周)/,
ordinal: function (number, period) {
switch (period) {
case 'd':
case 'D':
case 'DDD':
return number + '日';
case 'M':
return number + '月';
case 'w':
case 'W':
return number + '周';
default:
return number;
}
},
relativeTime: {
future: '%s內',
past: '%s前',
s: '幾秒',
m: '1 分鐘',
mm: '%d 分鐘',
h: '1 小時',
hh: '%d 小時',
d: '1 天',
dd: '%d 天',
M: '1 個月',
MM: '%d 個月',
y: '1 年',
yy: '%d 年'
},
week: {
// GB/T 7408-1994《數據元和交換格式·信息交換·日期和時間表示法》與ISO 8601:1988等效
dow: 1, // Monday is the first day of the week.
doy: 4 // The week that contains Jan 4th is the first week of the year.
}
});
4. 更新moment.js版本
npm add moment@2.24.0
親測第三種,第四種方法有效。
總結
使用vue進行微信小程序的編寫,寫法也類似Vue框架開發Web網頁一樣,使用組件,mpvue會自動轉化成源生代碼適應于小程序。
優點:組件化,易于維護,可以重復使用,節省開發成本。
數據綁定,事件處理,Scoped局部樣式,使用HTML標簽構建頁面。
這樣最大化的保持和網頁應用開發一致,減少了前端人員切換到小程序的學習理解成本,也為原先使用Vue開發的網頁應用移植到小程序平臺提供了降低遷移成本的可能。
數據方面更新更為簡易,不需要使用原生的SetData方法。還有WebPack自動構建,熟悉Vue的人易于上手。
優化了很多小程序的不足點(不能使用npm,不能使用css預處理器,原生是callback語法等等)
缺點:slot問題
原文鏈接:
https://blog.csdn.net/ms_yjk/article/details/105921002
?一文濃縮 60 年,程序員不可不知的開源秘史!
?CSDN總部落戶長沙,共建中國開發者產業中心城市!
?AI 修復 100 年前晚清影像喜提熱搜,有穿越內味兒了!
?CycleGan人臉轉為漫畫臉,牛掰的知識又增加了!| 附代碼
?觸發死鎖怎么辦?MySQL 的死鎖系列:鎖的類型以及加鎖原理了解一下!
?帶血的戰士| 吳忌寒傳
*請認真填寫需求信息,我們會在24小時內與您取得聯系。