网站seo优化_亚洲九色_seo云优化_亚洲九九九_搜索引擎seo_亚洲九九精品_启新网络服务中心

企億推信息網
專注網絡推廣服務

響應式開發的心得-深圳網站建設-沙漠風網站建設公司

  什么是響應式?響應式的頁面在不同的屏幕有不同的布局,換句話說,使用相同的html在不同的分辨率有不同的排版。如下圖所示:

  響應式布局是為了解決適配的問題,傳統的開發方式是PC端開發一套,手機端再開發一套,而使用響應式布局只要開發一套就好了。因為它是用的同樣html,所以它的JS邏輯交互也只需寫一套就好了,缺點是CSS比較重。

  傳統的手機端適配常見有三種解決方案,種是bootstrap的columns布局;第二種是使用全局的rem,先根據屏幕換算1rem等于多少個px,然后設置html標簽的font-size為多少個rem,屏幕越大,則font-size越大,然后頁面所有的元素的寬高和字體大小都用rem等比例縮放;第三種是阿里的flexbox,這種方案和第二種類似,不同點是頁面內容的字體大小是用的px,而不是比例縮放的rem。種需要額外引入一個框架。第三種相對第二種來說應該更合理點,因為正文的字體常用的為14px或者16px,如果一個頁面在這個手機字號是15.5px,在另外一個手機又變成了14.9px,這樣可能會有點奇怪。

  而使用響應式布局就不需要進行rem的換算,下面通過上圖的那個例子一步一步地分析怎么做響應式。

  1.設置不同分辨率頁面兩邊留白

  先一個頁面的主體內容有大的寬度,當屏幕超過這個寬度時這個中間的主體內容大就這么大了,不會再變大了,也就是說它固定一個大寬度,然后居中顯示,如大為1080px。然后當大于1024px時,頁面主體內容小寬為960px,兩邊自動留白;在500px到1024px之間兩邊保持留白40px;而當小于500px時就認為是手機,兩邊留白20px。所以計算一下,container的代碼如下:

  總體的思想是留白要合適,既不能留太多,導致中間內容太窄,也不能讓中間的內容顯得太大。這個其實和bootstrap的container思想一致,只是你可能要根據你自己的業務特點、用戶人群等做不同留白策略。

  2.屏幕變小時,一頭變窄,另一頭不變

  當屏幕變小或者瀏覽器窗口拉小時,中間內容的寬度就不能保持1080px,它得跟著變小,而在變小的過程中,往往要保持一邊不變,另一邊隨頁面變窄,如下圖所示:

  右邊的結果欄寬度保持不變,左邊的表單欄寬度縮小。因為右邊一旦就窄不好看了,如果右邊變窄,那么字體也要相應縮小,字號一縮小,右邊上下留白就變得太大,這樣就不美觀了,所以只能采取右邊保持不動的策略去縮小左邊的內容。這種場景比較常見,右邊如果是一個頭像的話,它也不能跟著縮小,它一縮小高度也要跟著縮小,導致上下太空,所以這種情況也不能動。

  3.保持中間留白固定,縮小內容寬度

  左欄的寬度變小應該怎么變呢?有一個原則,就是要保持中間的間距固定,而兩邊的內容寬度相應縮小,如下圖所示:

  所以就要借助CSS3的calc,如下所示:

  1

響應式開發的心得-深圳網站建設-沙漠風網站建設公司(圖1)網站建設-沙漠網站建設公司" />

  2

  3

  input

  calc的兼容性IE10及以上支持,android4及以下不支持,所以考慮到不支持的設備,可以簡單做個兼容,如下代碼所示:

  1

  2

  3

  4

  input

  如果不支持calc就用48%,這樣差別其實不是很大,就是不是很精確。真的需要的話,你可以多寫幾個媒體查詢變得更精確。

  4.左右布局變成上下布局

  當屏幕拉得很小的時候,左欄已經縮得很小了,再變小就不協調了,所以這個時候要把左右布局改成上下布局,把右邊的內容往下面放。因為右欄在大屏的時候是float:right,所以在中屏的時候覆蓋掉這個浮動的屬性,變成float:none就可以了。原本右欄的內容有四行,都比較短,可以考慮把它下面的三行排成一行,即讓它們浮動。如下面代碼所示:

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  .cal-result

  1

  media(max-width:800px)

  .cal-result

  .cal-result.result

  讓每一個result占1/3,然后浮動,效果如下:

  5.寬度太小時,自動換行

  特別是當內容是列表ul形式的時候,排不下的li應當自動換到下一行。當然也可以手動控制,如下:

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  media(max-width:800px)

  .result

  1

  media(max-width:400px)

  .result

  在屏幕寬度小于400的時候,每個結果就占50%,這樣就排成兩行了。這也是一種常用的辦法,但是在我們這個例子,如果數字比較小,在iPhone6375px的屏幕上還是排得下的,如果能保持在一行相對比較美觀。而且固定50%,如果當數字比較大時也有可能會有重疊的危險,這個也有辦法,就是別寫死寬度,而是寫死min-width為50%,這樣當內容比較長時,float的元素同一行排不下就會自動換行。但是知名還是要個辦法讓它能根據內容長度自動換行,當然可以用JS計算,但是有點麻煩。

  這個時候flex就派上用場了,很簡單,只要設置兩個屬性:

  1

  2

  3

  4

  5

  .result-container

  space-between讓子元素挨著容器的兩邊等間距排列,而wrap屬性讓子元素自動換行,當容器寬度不夠的時候,就有了以下的效果:

  這樣還有一個小問題,就是當內容如果剛剛好占滿時,兩個項之間就沒有間距了,如下圖所示:

  這樣就貼在一起了,由于flex的space-between不能指定小的space,所以只通過margin或者padding的方法,如給元素添加margin-right:

  1

  2

  3

  .result:not(:last-child)

  效果如下:

  這樣比貼在一起顯示的效果好。

  還有從大屏變成成小屏的時候有些字號主要是標題的字號和間距要相應調小,這種變小是階梯變化的,而不是像rem一樣連續變化,而且這種階梯一般只要有兩個就夠了,一個大屏的,一個小屏的。如果你需要做很多階梯的話,那你的排版很可能有問題。

  6.使用響應式圖片

  如相同的頭圖,在電腦上需要使用大圖,但是手機上面使用小圖就好了,不然會造成手機上加載慢浪費流量等問題,一個辦法是使用backgound-image結合媒體查詢,如下所示:

  1

  2

  3

  4

  5

  6

  7

  .banner

  media(max-width:500px)

  這種方法的缺點是對SEO不太友好,因為如果使用img標簽還可以寫個alt屬性。

  第二種常用辦法是使用img的srcset或者picture標簽做響應式圖片,這個我在《Effective前端7:加快頁面打開速度》已經提到,這里不再重復。

  這種響應式圖片除了大小屏之外,還可以兼顧視網屏即dpr為2及以上的和普通屏dpr為1的屏幕,即在高dpr的屏幕使用2倍圖,而普通屏幕使用1倍圖。

  7.其它問題處理

  有些地方大小屏的排版差異比較大,例如有些內容大屏的時候是挨在一起,而小屏離得比較遠,這個時候你可能得重復html,寫兩份的標簽,大屏的時候隱藏掉小屏的html標簽,小屏的時候隱藏掉大屏的html標簽。并且這種情況不應該是常例,如果你經常要寫兩套,那說明你這個頁面可能不太適合寫響應式,還不如直接寫兩套呢。

  還有個問題,有時候你可能要借助rem/transform:scale做大小縮放,但這一定是下策,我們的原則還是要保持字號和間距不變,當屏幕的跨度不是很大的時候。使用transform的后果是屏幕拉小的時候,內容跟著變小了,但是由于transform不會造成重排,它占據的高度還是那么大,下面的內容不會跟上來。這樣就得手動計算內容的高度。另外如果使用rem,就和響應式的思想沖突了。如果頁面的一部分字號使用了rem,另一部分字號使用了px,這樣就不協調了,如果你全部寫rem那就不需要使用響應式開發了。這個時候你可能要想一想,是不是UI出得有問題。讓UI重新調整。

  還有,有時候可能會用到高度的媒體查詢,例如在高度小于多少的時候,不能讓彈框超出頁面的高度;在高度大于多少的時候,讓footer的定位fixed在底部,不然footer的下面可能會留白。

未經允許不得轉載:啟新網站SEO優化 » 響應式開發的心得-深圳網站建設-沙漠風網站建設公司
分享到: 更多 (0)
加載中~
主站蜘蛛池模板: 挨踢网-大家的导航!| hdpe土工膜-防渗膜-复合土工膜-长丝土工布价格-厂家直销「恒阳新材料」-山东恒阳新材料有限公司 ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 冷却塔厂家_冷却塔维修_冷却塔改造_凉水塔配件填料公司- 广东康明节能空调有限公司 | 环讯传媒,永康网络公司,永康网站建设,永康小程序开发制作,永康网站制作,武义网页设计,金华地区网站SEO优化推广 - 永康市环讯电子商务有限公司 | 工业胀紧套_万向节联轴器_链条-规格齐全-型号选购-非标订做-厂家批发价格-上海乙谛精密机械有限公司 | 10吨无线拉力计-2吨拉力计价格-上海佳宜电子科技有限公司 | 电磁流量计厂家_涡街流量计厂家_热式气体流量计-青天伟业仪器仪表有限公司 | 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 飞歌臭氧发生器厂家_水处理臭氧发生器_十大臭氧消毒机品牌 | 杭州荣奥家具有限公司-浙江办公家具,杭州办公家具厂 | 储气罐,真空罐,缓冲罐,隔膜气压罐厂家批发价格,空压机储气罐规格型号-上海申容压力容器集团有限公司 | 多米诺-多米诺世界纪录团队-多米诺世界-多米诺团队培训-多米诺公关活动-多米诺创意广告-多米诺大型表演-多米诺专业赛事 | 电动葫芦|手拉葫芦|环链电动葫芦|微型电动葫芦-北京市凌鹰起重机械有限公司 | 捆扎机_气动捆扎机_钢带捆扎机-沈阳海鹞气动钢带捆扎机公司 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 逗网红-抖音网红-快手网红-各大平台网红物品导航 | 南京泽朗生物科技有限公司-液体饮料代加工_果汁饮料代加工_固体饮料代加工 | 无压烧结银_有压烧结银_导电银胶_导电油墨_导电胶-善仁(浙江)新材料 | 冷凝锅炉_燃气锅炉_工业燃气锅炉改造厂家-北京科诺锅炉 | 强效碱性清洗剂-实验室中性清洗剂-食品级高纯氮气发生器-上海润榕科学器材有限公司 | 实木家具_实木家具定制_全屋定制_美式家具_圣蒂斯堡官网 | 半自动预灌装机,卡式瓶灌装机,注射器灌装机,给药器灌装机,大输液灌装机,西林瓶灌装机-长沙一星制药机械有限公司 | 武汉高低温试验机-现货恒温恒湿试验箱-高低温湿热交变箱价格-湖北高天试验设备 | 开锐教育-学历提升-职称评定-职业资格培训-积分入户 | 房车价格_依维柯/大通/东风御风/福特全顺/江铃图片_云梯搬家车厂家-程力专用汽车股份有限公司 | 肉嫩度仪-凝胶测试仪-国产质构仪-气味分析仪-上海保圣实业发展有限公司|总部 | 考勤系统_人事考勤管理系统_本地部署BS考勤系统_考勤软件_天时考勤管理专家 | 泰国专线_泰国物流专线_广州到泰国物流公司-泰廊曼国际 | 安徽免检低氮锅炉_合肥燃油锅炉_安徽蒸汽发生器_合肥燃气锅炉-合肥扬诺锅炉有限公司 | 上海三信|ph计|酸度计|电导率仪-艾科仪器 | 净化板-洁净板-净化板价格-净化板生产厂家-山东鸿星新材料科技股份有限公司 | 球盟会·(中国)官方网站 | 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | 控显科技 - 工控一体机、工业显示器、工业平板电脑源头厂家 | 剪刃_纵剪机刀片_分条机刀片-南京雷德机械有限公司 | _网名词典_网名大全_qq网名_情侣网名_个性网名| 泰安塞纳春天装饰公司【网站】 | 贝壳粉涂料-内墙腻子-外墙腻子-山东巨野七彩贝壳漆业中心 | 精密模具-双色注塑模具加工-深圳铭洋宇通 | 广州展览制作|展台制作工厂|展览设计制作|展览展示制作|搭建制作公司 | sfp光模块,高速万兆光模块工厂-性价比更高的光纤模块制造商-武汉恒泰通 |