移動端開發的一些技巧

来源:http://www.cnblogs.com/LuckyWinty/archive/2016/06/09/5572570.html
-Advertisement-
Play Games

開篇語 最近接手了一個移動端的項目。個人感覺是自己做得比較快而且比較健壯的一個。。。移動端最主要就是頁面要適用不同的手機屏幕,ipad等。下麵就分享一些技巧,讓你不依賴任何框架高效地搭建自己的項目。 一、樣式按組件或板塊分文件寫再合成 ①設置各種變數 採用scss或者less來寫css代碼有很多好處 ...


開篇語

最近接手了一個移動端的項目。個人感覺是自己做得比較快而且比較健壯的一個。。。移動端最主要就是頁面要適用不同的手機屏幕,ipad等。下麵就分享一些技巧,讓你不依賴任何框架高效地搭建自己的項目。

一、樣式按組件或板塊分文件寫再合成

①設置各種變數

採用scss或者less來寫css代碼有很多好處。這裡就不詳細說。

我們拿到設計圖的第一步,就是要分析各個頁面之間有哪些模塊、哪些樣式、哪些顏色是一樣的。一般情況下,為了各個頁面的風格統一,各個頁面上的主顏色應該都是一致的,而且好些頁面都會用到一些相同的組件,例如slider。所以,我們首先可以定義一個常量文件,裡面就專門存放顏色、高度、寬度等變數。定義一個公共樣式文件,例如寫一些各個頁面都有可能用到的清楚浮動等樣式。

個人感覺scss比less更好用一點,用scss定義的話,其中有一個方法是%定義法,就是定義了並不會被編譯,而是實際上用到的時候才會被編譯。例子圖:

②按模塊細分

個人感覺,按模塊等細分之後,代碼的可讀性能夠明顯地提高,方便維護,而且引入頁面的文件個數也減少了,還可以提高性能呢。不過,這裡要註意,子模塊的文件名要以“_”開始哦,這樣就不會被編譯,而是需要引用的時候再編譯哦。例子如圖:

二、頁面適應性佈局

個人認為,適配移動端比較好的佈局方式是百分比+rem佈局。

百分比的優勢在於,同一個百分比的真實尺寸會跟隨屏幕大小變化。舉個例子,像這種:

 

紅色框那裡,假設現在的要求是一行4個板塊,適應任何屏幕。那麼,用ul,li寫html,然後佈局的話,如果寫定ul的寬度是100%,然後li的寬度是25%,再設置box-sizing:border-box的話。各種屏幕下,這四塊都是平分並且不會出現橫向滾動條的。不過要註意,這個時候的間距就不要用margin-left和margin-right來撐開,而是用padding來撐開。就是像這樣比例明顯,板塊區分度高的情況適合用百分比來佈局。

代碼如下:

ul{
    width:100%;
    margin-bottom:10px;
}
ul li{
    width:25%;
    box-sizing:border-box;

為什麼要設置box-sizing:border-box;呢?不明白的話,可以看這裡:http://www.w3school.com.cn/cssref/pr_box-sizing.asp。

rem的話,rem的取值是只。相對於根元素htm的font-size,即只需要設置根元素的font-size,其它元素使用rem單位設置成相應的百分比即可。你再用@media寫一下不同尺寸下跟元素html的font-size的值即可。然後神奇的事情就發生了。當你改變尺寸時,字體。圖片等,就會自動跟著適應了。用起來真的很爽!

一些常用的適應尺寸如下:

@charset "utf-8";

@media only screen and (max-width: 315px){
  html {
    font-size: 50% !important;
  }
}
@media only screen and (min-width: 316px){
  html {
    font-size: 62.5% !important;
  }
}
@media only screen and (min-width: 640px){
  html {
    font-size: 125% !important;
  }
}
@media only screen and (min-width: 750px){
  html {
    font-size: 150% !important;
  }
}
@media only screen and (min-width: 1242px){
  html {
    font-size: 187.5% !important;
  }
}

想瞭解更多,可以參考這裡:http://www.cnblogs.com/beidan/p/5275379.html#3382529。

三、常見的一些效果的做法

①頁面板塊可橫向滑動

一種就是我們經常見的,一些特賣活動、搶購活動的時候,需要出現橫向滾動情況。效果圖:

不要以為這種效果會涉及到什麼touch事件,要寫多複雜的js。其實只用css就可以很簡單地實現了。原理就是利用overflow屬性。設置其水平方向滾動,垂直方向hidden即可。

當然,還要配合一些其他的代碼。

具體css代碼如下:

ul.pinxiang-list{
        padding:10px;
        padding-top:0;
        padding-bottom:20px;
        width:100%;
        box-sizing:border-box;
        overflow-x:scroll;
        overflow-y:hidden;
        white-space: nowrap;
        float:left;
}
ul.pinxiang-list li{
        position:relative;
        display:inline-block;
        margin-right:5px;

這裡最主要的就是要設置ul的寬度是100%,並且向左浮動。li要設置為display:inline-block.

還有一個就是,如果你用谷歌調試的時候,會發現,效果是這樣的:

對,就是會出現一個明顯的滾動條。但是如果你用真機,也就是用移動設備看的時候,你會發現其實滾動條是不會出現的。所以有時候做移動的東西,還是需要真機測試一下比較靠譜啊。

另外要註意一個問題,由於li被display:inline-block.那麼就有了inline的屬性,預設。此元素會被顯示為內聯元素,元素前後沒有換行符。並且,該屬性定義行內元素的基線相對於該元素所在行的基線的垂直對齊。什麼意思呢,簡單來說就是這些li的對齊基線的預設方式是以最後一行的文字對齊的。看圖:

由圖中可以明顯看出,最後一個li由於沒有圖片撐起來,而它們的預設方式又是以最後一行文字為基準的,所以最後一個li就“掉”了下來。這個時候,我們就需要設置一下vertical-align這個屬性的值了。設置為:vertical-align:middle。具體用法,可以看這裡。這樣設置了的話,就沒有問題了哦。效果完成!!!

 

結語

好像也沒想到還要說什麼呢。先說到這裡吧。。。有看不懂的可以私信給我哦!

最後,祝大家端午節快樂!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、原生JavaScript編寫tab切換 二、jQuery編寫tab切換 在用jQuery編寫選項卡過程中,重要的事搞清楚 .eq() 和 .index() 的使用方法。 .eq()是jQuery遍歷的一種方法,參數是元素的索引 .index() 。要註意index是基於0開始的;如果index為 ...
  • 部署普通站點 1、首先下載apache24版本,下載地址為http://pan.baidu.com/s/1pLmvDgB; 2、解壓到你的電腦本地目錄,如D:\Apache24(下文配置都會以當前目錄作為參考說明) 3、修改D:\Apache24\conf\目錄下的httpd.conf文件 部署普通 ...
  • JavaScript數組簡介 JavaScript中的數組與其他語言中的數組是不同的,主要體現在: 數組中存儲的各項可以是不同類型的數據 數組的大小是動態變化的,當新增項時或移除項時可以動態的改變大小來容納當前數據項 在JavaScript中創建數組 在JavaScript中創建數組有兩種方式: 其... ...
  • webpack集成了模塊載入和打包等功能 ,這兩年在前端圈越來越手歡迎。平時一般是用requirejs、seajs作為模塊載入用,用grunt/gulp作為前端構建。webpack作為模塊化載入相容了amd/cmd模式,並且作為模塊化的資源可以是js/css/image coffeescript/s ...
  • 概述 上一篇我們介紹了通過構造函數和原型可以實現JavaScript中的“類”,由於構造函數和函數的原型都是對象,所以JavaScript的“類”本質上也是對象。這一篇我們將介紹JavaScript中的一個重要概念原型鏈,以及如何經原型鏈實現JavaScript中的繼承。 C#的繼承 首先,我們簡單... ...
  • ...
  • 隨著rc(release candidate,候選版本)版本的推出,萬眾矚目的angular2終於離正式發佈不遠啦!五月初舉辦的ng-conf大會已經過去了整整一個月,大多數api都如願保持在了相對穩定的狀態——當然也有router這樣的例外,在rc階段還在大面積返工,讓人頗為不解——不過總得說來, ...
  • 1、css的概念:(CascadingStyleSheet級聯樣式表) 優點:1.內容與表現分離。(用網頁的內容xhtml就可以與表象分開) 2.表象統一 3.豐富的樣式 4.減少網頁代碼 5.運用獨立於網頁的css 2.選擇器 1.標簽選擇器 標簽名{屬性:屬性值;} 2.類選擇器 .類名{屬性: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...