Vue3簡單項目流程分享——工作室主頁 零、寫在最前 以下是項目相關的一些鏈接: 源代碼GitHub倉庫(需要魔法上網(wǎng)):倉庫 網(wǎng)頁示例(需要魔法上網(wǎng)):網(wǎng)頁示例 UI圖(來源@設計師楊賀):MasterGo主頁 補充:由于時間關系,該網(wǎng)頁沒有適配手機端,最佳展示效果為網(wǎng)頁端1440p寬度。 如果你
以下是項目相關的一些鏈接:
補充:由于時間關系,該網(wǎng)頁沒有適配手機端,最佳展示效果為網(wǎng)頁端1440p寬度。
如果你想要運行源代碼:
cd your_path
git clone https://github.com/YellowSeaa/studio_page.git
npm install
npm run dev
課程作業(yè)要求要使用HTML+CSS+JSP技術,在網(wǎng)上了解到JSP內可以套用Vue(相當于用Vue寫模板,然后外面套一層JSP模板即可)。
最終決定使用Vue來實現(xiàn)前端,并且使用element Plus腳手架,后端部分嘗試使用JSP(沒學過,不知道能不能弄的下來),如果實在不行就用Django做前后端分離開發(fā)。
數(shù)據(jù)庫方面的話,就用Mysql或者sqlite3。
由于之前已經(jīng)安裝過Vue,所以不記錄了。
JSP和Tomcat參考的是下面幾篇文章,直接使用homebrew安裝的:
值得注意的是以下啟動 Tomcat方法
brew services start tomcat
如果終端提示
Successfully started 'tomcat' (label: homebrew.mxcl.tomcat)
則說明啟動成功,瀏覽器訪問
http://localhost:8080
即可看到 Tomcat 的頁面。
使用終端,進入想創(chuàng)建的文件夾位置,然后運行以下命令
npm create vue@latest
然后會讓我輸入項目名稱和進行一些選項,在此我只選擇了 引入 Vue Router 進行單頁面應用開發(fā) ,其他選項均選擇了否。
最后根據(jù)提示進入項目文件夾內,安裝依賴并運行即可。
cd
npm install #安裝依賴
npm run dev #運行項目
在瀏覽器中打開對應網(wǎng)址即可
本項目是簡單的項目,只有一個主頁面,頁面內由上到下排布多個塊。
我們只需要修改
src/App.vue
和
src/router/index.js
中的內容,將一開始的頁面指向自定義的文件
src/components/home.vue
即可,以下是具體內容:
// index.js
import { createRouter, createWebHistory } from 'vue-router'
import home from '../components/home.vue'
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes: [
{
path: '/',
name: 'home',
component: home
},
]
})
export default router
This is home
根據(jù)UI圖可以看出,主頁是由多個部分組成,由上到下排布。
本項目中將每個部分分別寫成一個組件文件,然后在
home.vue
中集成。
home.vue
只需要關注組件部分間的排版即可。
先分別創(chuàng)建好各個組件對應的文件:
然后修改
home.vue
最終得到效果如下:
接下來只需要在對應的組件文件中,完成前端的繪制即可。
首先看一下UI圖,布局如下:
使用flex布局,紅色部分使用
space-between
:兩端對齊,項目之間的間隔都相等;藍色部分使用
space-around
:每個項目兩側的間隔相等。
代碼如下:
最終效果:
后續(xù)還需要做:
點擊標簽滾動到對應位置: 參考文章
UI圖:
其中紅色部分使用flex分為左右兩部分,左邊使用flex分為上下三部分,右邊則是一張圖。
代碼如下:
A Digital Product Agency
Leading digital agency with solid design and development expertise. We build readymade
websites, mobile applications, and elaborate online business services.
最終效果:
接下來是下面的五個塊中的第一個。UI圖如下:
布局如圖所示。
代碼如下:
Our Client
Several selected clients, who already believe in our service.
效果如下:
UI圖如下:
布局有點復雜,其中兩個藍色部分通過調整不同的margin-top來實現(xiàn)錯位的效果。
背景的幾個矩形不太好直接通過代碼繪制,直接導出一張圖片放在容器背景中。
代碼如下:
How can we help your Business ?
We build readymade websites, mobile applications, and elaborate online business services.
Business Idea Planning
We present you a proposal and discuss niffty-gritty like
Financial Planning System
Protocols apart from aengage models, pricing billing
Development Website and App
Communication protocols apart from engagement models
Market Analysis Project
Protocols apart from aengage models, pricing billing
效果如下:
實踐中發(fā)現(xiàn),使用背景圖片來實現(xiàn)那些矩形,有點難以控制,效果不佳。最終我簡化了一些元素,勉強能看。
如果要達到最好的效果,還是得通過代碼實現(xiàn)矩形的繪制。
UI圖:
這里的布局比較簡單,就不過多贅述了。
比較特別的是此處使用了一個視頻播放器,
但是目前暫時沒有實現(xiàn),出現(xiàn)了一些bug:第三方的播放器插件安裝后import顯示找不到,傳統(tǒng)的video播放不了……
先使用img代替,后續(xù)再修這個bug。
選用
vue3VideoPlay
這個插件,值得注意的是,這個插件有一個問題,其默認package.json中有一個路徑是錯的,要改寫成下面這個:
另外,該插件官方的文檔也有點問題,mp4文件不知道為什么播放不了,本地文件也播放不了……
經(jīng)過測試,網(wǎng)絡m3u8文件可以播放,所以下面使用此格式進行播放。(如何獲得m3u8鏈接,寫在了補充部分)
代碼:
https://cdn.jsdelivr.net/gh/xdlumia/files/video-play/ironMan.jpg" :src="options.src"
:type="options.type" :autoPlay="false" />
此處值得注意的部分是,播放器的長和寬得像代碼的寫法才有效,寫成css無效,另外,圓角也只能通過設置父容器
overflow: hidden;
實現(xiàn)。
poster
部分是封面。
代碼:
Great Digital Product Agency since 2016
Our Business Plan is a written document describing a company's core business activites,
Objectives, and how it plans to achieve its goals. Our goal is to provide our client high quality
Product with modern idea accordingly their budgets and according thir reuirements.
效果:
UI圖:
這張圖是有動效的,中間的藍色圓圈可以選擇不同的人物介紹。
在此先做好靜態(tài)的外觀,動效后面再補全。
代碼如下:
What our happy client say
Several selected clients, who already believe in our service.
Matthew Paul
Perfect, very good job! Thank you for the amazing design and work. Really
impressed with the high quality and quick turnaround time. Highly recommend.
事實上,這里的圖片和選項都寫法,復用性很差,而且不好做動效。后面會使用v-for等方法進行修改。
效果如下(因為沒有找到合適的圖片,就隨便拿了一張圖片):
UI如下圖:
這一部分的布局和上面的有許多不同,有一部分的布局不能使用flex實現(xiàn),得用相對和絕對位置
relative
、
absolute
來實現(xiàn)重疊,如圖中的紅色、右邊的綠色部分。
具體代碼如下:
Subscribe Newsletter
I will update good news and promotion service not spam
效果如下:
UI如下:
布局比較簡單,就不過多贅述。
代碼如下:
效果:
前面寫靜態(tài)頁的時候,有一部分背景圖形是直接使用圖片,但是拉伸效果不好,所以補充使用div來畫矩形,以適應不同寬度的瀏覽器。
首先是headline的這兩個矩形:
在right_part中加上兩個div,并用相對位置和絕對位置固定。
// template
//style
.right_part {
min-width: 817px;
height: 100%;
overflow: auto;
position: relative;
/* background-color: red; */
}
.right_part img {
height: 512px;
width: 754px;
/* min-width: 754px; */
border-radius: 0px 0px 0px 200px;
position: absolute;
top: 0px;
right: 0px;
/* margin-left: 64.5px;
margin-bottom: 89px; */
}
.rectangle1{
position: absolute;
top: 0px;
left: 0px;
width: 129px;
height: 129px;
background: #DAE9FF;
border-radius: 500px 500px 500px 500px;
}
.rectangle2{
position: absolute;
bottom: 0px;
right: 120px;
width: 178px;
height: 178px;
background: #FFF5DB;
border-radius: 0px 0px 100px 0px;
}
上面提到過,那個視頻播放插件無法播放本地視頻,所以需要將視頻上傳到網(wǎng)絡上,通過網(wǎng)絡鏈接獲取。
在此使用阿里云的媒體處理MPS和對象存儲OSS實現(xiàn)。
媒體處理MPS
對象存儲
之前在布局時,多使用flex布局,可以根據(jù)瀏覽器寬度自適應布局,在一定的寬度限制內效果還不錯,但是如果寬度太大,會導致左右兩邊的組件之間有一個巨大的空白,很難看,所以需要限制一個最大的寬度,當超出這個寬度時,在兩邊使用空白填充。
只需要在
home.vue
的
style
部分添加下面代碼。
max-width: 1440px;
/* 設置最大寬度 */
margin-left: auto;
/* 左側自動填充 */
margin-right: auto;
/* 右側自動填充 */
效果如下:
視頻播放器有一個bug:在一開始打開頁面的時候,會開始緩沖,緩沖時默認把頁面滾動到播放器所在的位置。
但是我們想要打開時默認在頂部。
試過使用
mounted
鉤子函數(shù)強制滾動到頂部,但是緩沖在后,結果是不生效。
認真查看了視頻播放器的文檔后,發(fā)現(xiàn)通過綁定事件,在緩沖開始時滾動到頂部,可以曲線救國。
const onloadstart = (ev) => {
console.log("開始緩沖");
window.scroll(0, 0);
};
以上,前端靜態(tài)部分的所有布局都畫好了,接下來要根據(jù)實際情況將內容修改成我們自己的。
在這里,我想要做的是我們開發(fā)的一款app的介紹,所以將頁面改成了以下。(由于只需要修改內容,所以代碼就不展示了)
將我們想用的圖標替換掉
public/favicon.ico
修改根目錄下的
index.html
文件:
錕皆撅拷錕斤拷錕斤拷錕斤拷專注錕斤拷效錕斤拷學習錕斤拷錕斤拷
錕斤拷錕斤拷細錕斤拷喜錕斤拷錕斤拷嵌錕教拷錕斤拷鄭錕斤拷錕斤拷錕街憋拷錕酵拷錕絚ss錕斤拷錕斤拷錕斤拷錕斤拷實錕街o拷只錕斤拷錕斤拷錕斤拷前錕斤拷錕斤拷錕斤拷錕斤拷錕剿o拷錕斤拷錕節(jié)此詫拷錕斤拷錕較★拷
home.vue
錕僥鹼拷錕斤拷錕斤拷錕矯詫拷錕斤拷
TopBar.vue
錕斤拷錕斤拷css
.bar {
display: flex;
justify-content: space-between;
/* margin要錕僥籌拷padding */
padding-top: 42px;
padding-left: 120px;
padding-right: 120px;
padding-bottom: 10px;
box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.1); /* 錕斤拷錕較底詫拷錕斤拷影錕矯匡拷一些*/
/* margin-top: 42px;
margin-left: 120px;
margin-right: 120px; */
}
錕斤拷錕節(jié)革拷錕斤拷錕斤拷錕斤拷母叨錕斤拷槍潭錕斤拷錕斤拷錕僥o拷錕斤拷錕斤拷直錕斤拷使錕斤拷
document.documentElement.scrollTop
錕斤拷錕斤拷實錕街★拷
錕斤拷錕斤拷錕斤拷錕斤拷鈕錕斤拷錕斤拷錕斤拷錕斤拷錕鉸斤拷錕斤拷錕斤拷鈕只錕斤拷要錕斤拷一錕斤拷錕斤拷錕斤拷錕斤拷錕接鹼拷錕繳o拷錕斤拷錕斤拷錕斤拷錕接匡拷錕斤拷使錕矯幫拷錕斤拷錕斤拷oss錕斤拷錕斤拷取錕斤拷錕斤拷錕藉方錕斤拷錕斤拷之前錕斤拷頻m3u8錕斤拷錕接伙拷取錕筋不錕潔,錕酵詫拷錕斤拷錕斤拷贅錕斤拷錕斤拷
錕斤拷錕結交錕斤拷錕斤拷鈕錕斤拷要錕斤拷一錕斤拷錕斤拷錕捷匡拷錕斤拷錕斤拷慕涌冢錕斤拷錕斤拷錕斤拷錕斤拷錕叫碉拷錕斤拷錕捷鹼拷錕誡到錕斤拷錕捷匡拷錕叫★拷
錕斤拷錕斤拷目前沒錕叫匡拷錕斤拷錕斤拷錕截的訛拷錕斤拷錕斤拷錕斤拷錕捷匡拷錕斤拷錕斤拷慕涌冢錕斤拷錕斤拷躍圖虻グ錕斤拷錕揭伙拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕較拷頡4錕斤拷錕酵詫拷展示錕剿★拷
錕斤拷員錕斤拷錕杰詫拷錕街o拷錕斤拷要錕斤拷錕斤拷錕斤拷錕皆碉拷錕斤拷錕斤拷錕斤拷選錕斤拷鈕錕斤拷錕叫伙拷錕斤拷錕斤拷應錕僥籌拷員錕斤拷息去錕斤拷
template
錕斤拷錕街o拷
{{ selectedMember.name }}
{{ selectedMember.description }}
script
錕斤拷錕街o拷
錕斤拷錕較o拷web頁錕斤拷錕斤拷錕斤拷錕繳o拷錕斤拷錕斤拷錕斤拷錕斤拷錕角斤拷錕戒部錕斤拷GitHub錕較★拷
錕轎匡拷錕教程o拷 錕轎匡拷
錕斤拷錕斤拷目錕叫碉拷 vite.config.js 錕斤拷錕揭碉拷錕斤拷錕斤拷錕斤拷錕介,錕斤拷錕斤拷為錕斤拷應錕斤拷 github 錕街匡拷錕斤拷錕斤拷
export default defineConfig({
base: '/your_repositories_name/', // github錕街匡拷錕斤拷錕斤拷
plugins: [],
})
npm run build
錕斤拷要錕斤拷
.gitignore
錕僥鹼拷錕叫斤拷dist錕僥鹼拷錕叫的猴拷錕皆革拷注錕酵碉拷錕斤拷
然錕斤拷錕斤拷git錕斤拷錕斤拷錕僥鹼拷錕斤拷錕較達拷錕斤拷指錕斤拷錕斤拷支錕斤拷
git add dist
git commit -m "Your commit message"
git subtree split --prefix dist -b dist-branch
git push your_repositories_name dist-branch:gh-pages # 錕斤拷錕斤拷要錕僥成撅拷錕斤拷牟摯錕斤拷錕?git branch -d dist-branch
錕斤拷錕斤拷誆摯錕斤拷錕斤拷錕斤拷錕叫達拷github page錕斤拷錕繳★拷
全錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷ERA5錕斤拷錕斤拷錕截鳳拷錕斤拷
錕僥訛拷錕斤拷錕斤拷學習錕斤拷錕斤拷錕斤拷錕界構錕斤拷錕斤拷錕鉸o拷
錕僥訛拷錕斤拷為Mate品錕斤拷盛錕戒:HarmonyOS NEXT錕接籌拷錕斤拷錕斤拷戲錕斤拷錕杰得碉拷錕斤拷錕斤拷頭錕?/a>
錕僥訛拷實錕街訛拷錕襟集猴拷錕斤拷DataTable錕斤拷錕潔互轉錕斤拷
錕僥訛拷錕斤拷錕斤拷NEXT元錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕窖匡拷錕斤拷錕較鹼拷錕斤拷品
錕僥訛拷錕結巢錕斤拷錕叫★拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕狡鹼拷錕截閉鳳拷錕斤拷
錕僥訛拷錕斤拷錕斤拷錕紸rcMap錕斤拷錕斤拷錕叫斤拷錕斤拷柵錕斤拷圖錕斤拷錕截詫拷錕斤拷錕斤拷錕斤拷
錕僥訛拷錕斤拷訊錕斤拷錕斤拷錕竭客鳳拷錕斤拷營錕斤拷系統(tǒng)錕斤拷錕斤拷
錕僥訛拷錕斤拷錕節(jié)猴拷錕斤拷NEXT錕斤拷血錕斤拷錕腳達拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷
錕僥訛拷5. Spring Cloud OpenFeign 錕斤拷錕斤拷式 WebService 錕酵伙拷錕剿的籌拷錕斤拷細使錕斤拷
錕僥訛拷Java錕斤拷錕斤拷模式錕斤拷錕斤拷態(tài)錕斤拷錕斤拷錕酵訛拷態(tài)錕斤拷錕斤拷錕僥對比鳳拷錕斤拷
錕僥訛拷Win11錕絞記憋拷錕斤拷錕皆訛拷錕斤拷錕斤拷應錕矯碉拷錕斤拷色錕斤拷錕斤拷示錕斤拷錕斤拷
錕僥訛拷錕斤拷錕節(jié)猴拷錕斤拷錕斤拷錕斤拷系錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕?/a>錕斤拷錕斤拷站錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕狡鹼拷錕斤拷錕斤拷
頻錕斤拷 錕斤拷錕斤拷頻錕斤拷錕斤拷錕斤拷錕斤拷專錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷卓錕斤拷錕斤拷錕?/a>錕斤拷app錕斤拷錕斤拷
錕狡鹼拷 錕斤拷原錕斤拷錕斤拷錕斤拷錕斤拷錕鉸幫拷錕斤拷錕斤拷錕斤拷錕杰匡拷錕斤拷錕斤拷錕截詫拷錕斤拷
錕斤拷錕斤拷 錕斤拷錕斤拷色錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷 錕斤拷錕斤拷錕?/a>錕斤拷錕斤拷戰(zhàn)錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷
掃錕斤拷維錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕街伙拷錕芥本錕斤拷
掃錕斤拷維錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷微錕腳癸拷錕節(jié)號o拷
錕斤拷站錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕較達拷錕斤拷錕斤拷錕斤拷錕街鳳拷錕斤拷陌錕餃拷錕斤拷敕拷始錕?a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d8b9bcb5b1b698b0b9b7acbdf6bbb7b5">[email protected]
錕斤拷ICP錕斤拷2022002427錕斤拷-10 錕芥公錕斤拷錕斤拷錕斤拷錕斤拷43070202000427錕斤拷© 2013~2025 haote.com 錕斤拷錕斤拷錕斤拷