【問題】
CSSでleftとrightを同時に指定した際に、rightが半分ぐらいしか効かない現象が発生
left: 500px;
right: 500px;
→この場合、rightが200pxとかしか動かない
###【環境】
FireFox 89.0
画面の大きさ 100%
###【コード】
html
1<div id = 'test' class='test2'>test div</div>
sCSS
1#test{ 2 height: 300px; 3 width: 300px; 4 background-color: white; 5 border-radius: 10px; 6 box-shadow: 1px 1px 1px 1px black; 7 transition: all 0.8s; 8 9 &.test2{ 10 top: 0; 11 bottom: 0; 12 left: 1150px; 13 right: 0; 14 position: absolute; 15 margin: auto; 16 } 17} 18 19.is-move{ 20 right: 800px !important; --test用にimportant 21}
js
1 2test = document.getElementById('test'); 3test.addEventListener('click', move); 4 5function move(e){ 6 test.classList.add('is-move'); 7 console.log('is-move 起動'); 8}
###【処理の手順】
1.html要素をクリック
2.javaScriptのクリックイベントにより、html要素に「is-move」が付与される
3.cssの「is-move」により、right方向に800px移動する
→がしかし、実際は800pxも動かず100px程度だったりする
###【現状分かっている事】
・初期位置から画面端までの距離を最初に保持しており、それの距離を超える挙動はできない?
例)このHTML要素の場合、Firefoxで画面の大きさが100%であれば、初期位置から左方向に1250px分
程動けるはずです。
この「1250px」がhtmlの動ける総量、ということになります。
※ここで言う初期位置とは、margin:auto & top, left, right, bottomが0の状態です。
そしてclass= 'test2' のcssは最初に右方向に「1150px」分動いています。
その後、classList.add('is-move')により左方向に「800px」動こうとするのですが、
1250 - 1150 = 100 となり、実際は「100px」ぐらいしか動かない、という認識です。
正直何故このような現象が起きているのか分からないので、何か分かる方、ご教授お願い致します。
###【参考にしてみたが、多分違う気がする】
left - CSS: カスケーディングスタイルシート | MDN
→こちらの「過剰指定」という単語が気になりますが、内容がそれじゃない気がしています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/11 11:30 編集
2021/06/11 11:31