****以下ソースコードのHTML&CSSの画像、吹き出しを逆サイドにしたいです。
現在、動く吹き出しのデザインをしており、デザイン変更方法に苦戦しております。
以下ソースコードのHTML&CSSの画像、吹き出しを逆サイドにしたいです。
改変したい元々の部分の画像イメージはこれです!
【BEFORE】
【AFTER】
上のイメージから画像を左、吹き出しも左からでる形に改変したいです。
上の中身(Before部分)となってるソースコードがこちら。
HTML
1 2<script> 3 var slideFukidashi = slideFukidashi || {}; 4 (function(_) { 5 6 _.init = function() { 7 window.addEventListener('scroll', function() { 8 let target = document.getElementsByClassName('js-slideFukidashi'); 9 10 for (let i = 0; i < target.length; i++) { 11 targetAction(target[i], i); 12 } 13 14 function targetAction(targetDOM, targetId) { 15 let height = targetDOM.offsetHeight; 16 let classX = targetDOM.className; 17 let offsetY = targetDOM.getBoundingClientRect().top; 18 let screenHeight = window.innerHeight; 19 let position = offsetY - screenHeight; 20 let topPosition = (offsetY - 50) - screenHeight; 21 let btmPosition = offsetY - (screenHeight - 50); 22 23 if (-screenHeight <= (topPosition + height) && btmPosition < 0) { 24 if (targetDOM.classList.contains('slide-out') == true) { 25 targetDOM.classList.remove('slide-out'); 26 targetDOM.classList.add('slide-in'); 27 } 28 } else { //画面外 29 if (targetDOM.classList.contains('slide-in') == true) { 30 targetDOM.classList.remove('slide-in'); 31 targetDOM.classList.add('slide-out'); 32 } 33 } 34 } 35 }); 36 } 37 })(slideFukidashi); 38 window.addEventListener('load', slideFukidashi.init, false); 39</script> 40<!-- 41JavaScriptはここまで 42以下がHTML 43--> 44<div class="balloon"> 45 <div class="chatting js-slideFukidashi slide-out"> 46 <div class="says"> 47 <p>ここに文字を入力します。</p> 48 </div> 49 </div> 50 <div class="faceicon"> 51 <!--画像の入れ替えは下記URL変更で入れ替え可能--><img src="https://production.static.squadbeyond.com/uploads/article_photo/photo/726215/0f58281c-0a19-4fc9-aee3-f56f734f11c7.jpg" draggable="false" class="lazyload"> 52 </div> 53</div>
CSS
1 .balloon { 2 /*周りの余白の指定。上下|左右*/ 3 margin: 1.5em 0; 4 overflow: hidden; 5 display: flex; 6 justify-content: flex-end; 7} 8 9 .chatting { 10 padding: 0 0 5px 5px; 11 /*吹き出しの幅を変更する場合、下記autoを削除して20%から100%の値を指定*/ 12 width: auto; 13} 14 15 .chatting.slide-out { 16 opacity: 0; 17 transition: all 0.5s; 18 transform: translate(100%, 0); 19 overflow: hidden; 20} 21 22 .chatting.slide-in { 23 opacity: 1; 24 transition: all .5s; 25 transform: translate(0, 0); 26 overflow: hidden; 27} 28 29 .faceicon { 30 display: inline-block; 31 width: 55px; 32 min-width: 55px; 33 height: auto; 34 position: relative; 35 overflow: hidden; 36} 37 38 .faceicon img { 39 /*画像周りの線の指定。左から、線の種類、線の太さ、線の色*/ 40 border: solid 3px #ffb6c1; 41 background: #fff; 42 width: 55px; 43 height: 55px !important; 44 object-fit: cover; 45 box-sizing: border-box; 46 border-radius: 50%; 47} 48 49 .says { 50 display: block; 51 position: relative; 52 margin: 0; 53 padding: 10px; 54 border-radius: 10pt; 55 box-shadow: -3px 3px 3px rgba(0, 0, 0, 0.4); 56 /*吹き出しの背景色指定。※三角部分の色を除く*/ 57 background-color: #fff; 58 border: 3px solid #ffb6c1; 59 margin-right: 20px; 60} 61 62 .says:before { 63 content: ""; 64 position: absolute; 65 top: 13px; 66 right: -15px; 67 /*三角部分の色変更は下記より変更*/ 68 border-left: 13px solid #ffb6c1; 69 border-bottom: 13px solid transparent; 70 border-top: 13px solid transparent; 71} 72 73 .says:after { 74 content: ""; 75 position: absolute; 76 top: 15px; 77 right: -11px; 78 /*三角部分の色変更は下記より変更*/ 79 border-left: 11px solid #fff; 80 border-bottom: 11px solid transparent; 81 border-top: 11px solid transparent; 82} 83 84 p { 85 margin: 0; 86 padding: 0; 87}
下記のAfterのために試行したコード(中途半端なもの)がこちら。
HTML
1<!--下記のscriptをタグ設定のbodyにカット&ペースト--> 2<script> 3 var slideFukidashi = slideFukidashi || {}; 4 (function(_) { 5 6 _.init = function() { 7 window.addEventListener('scroll', function() { 8 let target = document.getElementsByClassName('js-slideFukidashi'); 9 10 for (let i = 0; i < target.length; i++) { 11 targetAction(target[i], i); 12 } 13 14 function targetAction(targetDOM, targetId) { 15 let height = targetDOM.offsetHeight; 16 let classX = targetDOM.className; 17 let offsetY = targetDOM.getBoundingClientRect().top; 18 let screenHeight = window.innerHeight; 19 let position = offsetY - screenHeight; 20 let topPosition = (offsetY - 50) - screenHeight; 21 let btmPosition = offsetY - (screenHeight - 50); 22 23 if (-screenHeight <= (topPosition + height) && btmPosition < 0) { 24 if (targetDOM.classList.contains('slide-out') == true) { 25 targetDOM.classList.remove('slide-out'); 26 targetDOM.classList.add('slide-in'); 27 } 28 } else { //画面外 29 if (targetDOM.classList.contains('slide-in') == true) { 30 targetDOM.classList.remove('slide-in'); 31 targetDOM.classList.add('slide-out'); 32 } 33 } 34 } 35 }); 36 } 37 })(slideFukidashi); 38 window.addEventListener('load', slideFukidashi.init, false); 39</script> 40<!-- 41JavaScriptはここまで 42以下がHTML 43--> 44<div class="faceicon"> 45 <!--画像の入れ替えは下記URL変更--><img src="https://production.static.squadbeyond.com/uploads/article_photo/photo/726165/c082b6cf-f7f5-4952-a5b5-063eee65aad0.jpg" draggable="false" class="lazyload"> 46</div> 47<div class="balloon"> 48 <div class="chatting js-slideFukidashi slide-out"> 49 <div class="says"> 50 <p>文字入力</p> 51 </div> 52 </div> 53 54</div>
CSS
1 .balloon { 2 /*周りの余白の指定。上下|左右*/ 3 margin: 1.5em 0; 4 overflow: hidden; 5 display: flex; 6 justify-content: flex-end; 7} 8 9 .chatting { 10 padding: 0 0 5px 5px; 11 /*吹き出しの幅を変更する場合、下記autoを削除して20%から100%の値を指定*/ 12 width: auto; 13} 14 15 .chatting.slide-out { 16 opacity: 0; 17 transition: all 0.5s; 18 transform: translate(100%, 0); 19 overflow: hidden; 20} 21 22 .chatting.slide-in { 23 opacity: 1; 24 transition: all .5s; 25 transform: translate(0, 0); 26 overflow: hidden; 27} 28 29 .faceicon { 30 display: inline-block; 31 width: 55px; 32 min-width: 55px; 33 height: auto; 34 position: relative; 35 overflow: hidden; 36} 37 38 .faceicon img { 39 /*画像周りの線の指定。左から、線の種類、線の太さ、線の色*/ 40 border: solid 3px #ffb6c1; 41 background: #fff; 42 width: 55px; 43 height: 55px !important; 44 object-fit: cover; 45 box-sizing: border-box; 46 border-radius: 50%; 47} 48 49 .says { 50 display: block; 51 position: relative; 52 margin: 0; 53 padding: 10px; 54 border-radius: 10pt; 55 box-shadow: -3px 3px 3px rgba(0, 0, 0, 0.4); 56 /*吹き出しの背景色指定。※三角部分の色を除く*/ 57 background-color: #fff; 58 border: 3px solid #ffb6c1; 59 margin-left: 15px; 60} 61 62 .says:before { 63 content: ""; 64 position: absolute; 65 top: 15px; 66 left: -11px; 67 /*三角部分の色変更は下記より変更*/ 68 border-right: 13px solid #ffb6c1; 69 border-bottom: 13px solid transparent; 70 border-top: 13px solid transparent; 71} 72 73 .says:after { 74 content: ""; 75 position: absolute; 76 top: 15px; 77 left: -11px; 78 /*三角部分の色変更は下記より変更*/ 79 border-right: 11px solid #fff; 80 border-bottom: 11px solid transparent; 81 border-top: 11px solid transparent; 82} 83 84 p { 85 margin: 0; 86 padding: 0; 87}
です!ご教授のほど、お願い致します!!
回答2件
あなたの回答
tips
プレビュー