私は大部分のために働く次のコードを持っています。しかし、常にそうではありません。私はそれを無駄に働かせようとするためにかなり多く手を加えました。問題は断続的に見えますが、間違いなく再現性があります。奇妙なCSSの位置右:0の問題
このコードでは、ビューポート内のどこにあるかに応じて、項目の右または左に.menu
divを配置し直します。アイテムの右端が途中のマークを過ぎている場合は、.menu
divの辺が変更されます。
しかし、ウィンドウを数回置き換えて右側にある項目を選択すると、CSSがすぐに機能せず、要素が左側に配置されることがあります。
私のコードは何か間違っているのですか、他の誰かがこの問題を以前に見たことがありますか?誰もそれを修正する方法を知っていますか?コンソールの値によって、右が幅より大きいことがわかりますが、要素は依然として間違っています。
あなたは、CSSを削除していない
$(document).ready(function() {
$(document).on("click", ".item", function(event) {
var widthCenter = window.innerWidth/2;
var rightPos = $(this)[0].getBoundingClientRect().right;
console.log("width center:", widthCenter);
console.log("right", rightPos);
if (rightPos > widthCenter)
$(this).children(".menu").css("right", "0", "!important");
else
$(this).children(".menu").css("left", "0", "!important");
var showingMenu = false;
if ($(this).children(".menu").is(':visible'))
showingMenu = true;
$(".menu").hide();
if (showingMenu)
$(this).children(".menu").hide();
else
$(this).children(".menu").show();
});
});
.container1 {
display: flex;
flex-direction: row;
flex-wrap: wrap;
border-width: 1px;
border-style: solid;
}
.item {
position: relative;
width: 60px;
height: 40px;
border-width: 1px;
border-style: solid;
margin: 20px;
}
.menu {
display: none;
position: absolute;
width: 100px;
height: 100px;
background-color: blue;
top: 100%;
margin: 0;
padding: 0;
z-index: 100;
border-width: 1px;
border-style: solid;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container1">
<span class="item">item<div class="menu"></div></span>
<span class="item">item<div class="menu"></div></span>
<span class="item">item<div class="menu"></div></span>
<span class="item">item<div class="menu"></div></span>
<span class="item">item<div class="menu"></div></span>
<span class="item">item<div class="menu"></div></span>
<span class="item">item<div class="menu"></div></span>
<span class="item">item<div class="menu"></div></span>
<span class="item">item<div class="menu"></div></span>
<span class="item">item<div class="menu"></div></span>
<span class="item">item<div class="menu"></div></span>
</div>
これは私にとっては完璧に機能しているようです( 'item'が左から途中まである場合は、青色のボックスを反転させます)。 –
ウィンドウのサイズを変更しないでくださいいつも動くとは限りません...私はChromeのバージョン53.0.2785.143(64ビット)を実行していますが、それはFirefoxでも同じでした –
右側の要素を選択する –