##ききたいこと
デバイスごとに@mediaでデザインをし直す以外に、
レスポンシブができる方法を知りたい。
##やりたいこと
以下のようなPC用サイトの、スマホ版をつくりたいです。
親要素にposition:relative;
子要素にposition:absolute;を適用させたデザインにしています。
##困っていること
デバイスのサイズを変えると、デザインが大幅に崩れてしまう。
iphone X用、iphone5用、ギャラクシー用、ipad用…などそれぞれに@mediaで対応デザインを作っています。
しかしアジア製の私が知らないデバイスもあり、
全てのデバイスに対応するようにデザインをつくることが困難になっています。
##該当コード
html
1 2 <section class="mainvisual"> 3 <img src="export.png"> 4 <div class="bg1-text-div"> 5 <p class="bg1-text"> 6 <span class="bg1-text-color"><i class="fas fa-check mygray"></i> 7 学校や職場でよくものをなくす 8 </span> 9 </p> 10 11 <p class="bg1-text"> 12 <span class="bg1-text-color"><i class="fas fa-check mygray"></i> 13 整理整頓が苦手 14 </span> 15 </p> 16 17 <p class="bg1-text"> 18 <span class="bg1-text-color"><i class="fas fa-check mygray"></i> 19 よくケアレスミスをしてしまう 20 </span> 21 </p> 22 </div> 23 <p class="bg2-text"> 24 <span class="bg2-text-color"> 25 生きづらさを感じるあなたは<br> 26 ADHDかもしれません 27 </span> 28 </p> 29 <div class="bg3"></div> 30 <a href="test/03b.html"> 31 <p class="bg3-text"> 32 今すぐ診断チェック→ 33 </p></a> 34 </section>
css
1// mainvisualの設定 2 #mainvisual { 3 position: relative; 4 height: 600px; 5 } 6 7 .mainvisual img { 8 height: 600px; 9 object-fit: cover; 10 position: absolute; 11 z-index: -4; 12 width: 1300px; 13 padding-left: 5%; 14 padding-right: 5%; 15 padding-top:3%; 16 } 17@media (max-width: 1100px){ 18 .mainvisual img { 19 height: 600px; 20 object-fit: cover; 21 position: absolute; 22 z-index: -4; 23 max-width: 900px; 24 /* padding-left: 5%; 25 padding-right: 5%; */ 26 padding-top:3%; 27 }} 28 29 @media (max-width: 780px){ 30 .mainvisual img { 31 height: 600px; 32 object-fit: cover; 33 position: absolute; 34 z-index: -4; 35 max-width: 700px; 36 /* padding-left: 5%; 37 padding-right: 5%; */ 38 padding-top:3%; 39 }} 40//以下mainvisualについて各デバイスごとの設定が続く、省略 41 42//bg-textの設定 43.bg1-text-div{ 44 padding-top: 20px; 45 } 46 47 .bg1-text { 48 font-size: 30px; 49 color: #7f7f7f; 50 margin: 0px; 51 padding-left: 20px; 52 } 53 54 .bg1-text-color{ 55 background-color:#f1f1f1; 56 } 57 @media (max-width: 450px){ 58 59 .bg1-text { 60 font-size: 25px; 61 color: #7f7f7f; 62 margin: 0px; 63 padding-left: 20px; 64 } 65 66 .bg1-text-color{ 67 background-color:#f1f1f1; 68 }} 69 70 @media (max-width: 375px){ 71 .bg1-text { 72 font-size: 22px; 73 } } 74//以下、bg1-textについてデバイスごとの設定が続く、省略 75 76//bg-2-text,bg3の設定 77 .bg2-text { 78 font-size: 45px; 79 color: #fff; 80 padding-top: 260px; 81 padding-left: 810px; 82} 83 84.bg2-text-color{ 85 background-color:#A5CAD2; 86} 87 88.bg3 { 89 background: #FF7A89; 90 height: 80px; 91 width: 30%; 92 position: absolute; 93 top: 820px; 94 right: 150px; 95 border-radius: 50px; 96 z-index: -1; 97 box-shadow: 3px 3px 6px rgba(0, 0, 0, .26); 98} 99 100.bg3:hover { 101box-shadow: 0 5px 5px 0 rgba(0, 0, 0, .26); 102 -webkit-transition: all .3s ease-out; 103 transition: all .3s ease-out 104 } 105 106.bg3-text { color: #F1f1f1; 107 height: 80px; 108 width: 30%; 109 position: absolute; 110 top: 790px; 111 right: 110px; 112 font-size:35px; 113} 114@media (max-width: 1100px){ 115 .bg2-text { 116 font-size: 35px; 117 top: 90%; 118 } 119 120 .bg3 { 121 height: 80px; 122 width: 30%; 123 position: absolute; 124 top: 50%; 125 bottom:0%; 126 right: 90% 127 } 128 129 .bg3-text { color: #F1f1f1; 130 height: 80px; 131 width: 30%; 132 position: absolute; 133 top: 49%; 134 bottom:0%; 135 right: 14%; 136 font-size:30px; 137}} 138 @media (max-width: 450px){ 139 .bg2-text { 140 font-size: 25px; 141 top: 90%; 142 padding-left: 5%; 143} 144 .bg3 { 145 height: 80px; 146 width: 80%; 147 position: absolute; 148 top: 92%; 149 bottom:0%; 150 right: 10%; 151 left:10%; 152} 153 154.bg3-text { 155 height: 80px; 156 width: 80%; 157 position: absolute; 158 top: 90%; 159 bottom:2%; 160 right: 8%; 161 left:12%; 162 font-size:30px;}} 163 164//以下、bg3-text, bg3についてデバイスごとの設定が続く、省略 165
省略させていただきましたが、このように@mediaでデバイスごとに設定を繰り返していることをしてしまっています。
「こんな方法がある!」というものでも構いませんので、示唆をいただけますと幸いです。
宜しくお願い致します。
回答3件
あなたの回答
tips
プレビュー