Je veux définir le débordement du corps sur masqué lorsque la classe “popup” a été utilisée. Et appelé cette classe par JavaScript. En tant que CSS, ça ne marche pas.
Puis-je avoir une balise “body” nestede dans ma classe comme ceci?
#CSS .popup { display: table; height: 100% !important; table-layout: fixed; width: 100%; position: fixed; top: 0px; bottom: 0px; z-index: 400; body { overflow: hidden!important; } }
Mon exemple est lorsque vous cliquez sur les photos de Facebook, il apparaîtra en plein écran et le défilement verrouillé. Merci tout aide
Je l’appelle comme ça.
Click to view larger
JavaScript
function getphoto(inputSsortingng) { $('body').css('overflow', 'hidden'); if(inputSsortingng.length == 0||false) { $('#suggestions3').fadeOut(); // Hide the suggestions box }else{ //alert(inputSsortingng); $.post("p/photo.php", {querySsortingng: ""+inputSsortingng+""}, function(data) { // Do an AJAX call $('#suggestions3').fadeIn(); // Show the suggestions box $('#suggestions3').html(data); // Fill the suggestions box }); } }
inputSsortingng est une photo. Dans photo.php, il renvoie le contenu HTML
Puis-je avoir une balise “body” nestede dans ma classe comme ceci? Non.
Lorsque la classe popup
est appelée, utilisez jQuery .css()
cette façon:
$("body").css("overflow", "hidden");
Plus d’infos: http://api.jquery.com/css/
Vous ne pouvez pas utiliser CSS
comme ça. Vous pouvez cependant avoir une classe appelée overflow-hidden
dans votre css qui se trouve juste comme ceci:
.overflow-hidden{ overflow:hidden !important; }
Puis dans jQuery:
$('.popup').click(function(){ $('body').addClass('overflow-hidden'); });
Vous pouvez aussi utiliser
toggleClass()
et
removeClass()
afin que vous puissiez addClass()
quand vous voulez lui donner la classe css puis removeClass()
une fois que le popup est parti.
Non, vous ne pouvez pas utiliser css comme ça
if($('.popup').is(':visible')){ $("body").css('overflow', 'hidden'); }
ou
$('.popup').click(function(){ $("body").css('overflow', 'hidden'); });
Sur la fermeture de votre popup ou autre condition
$("body").css('overflow', 'yourchoice');
Vous pouvez utiliser jQuery comme ceci:
$('body').filter(function(){ return $(this).find('.popup').is(':visible') }).css('overflow','hidden');
Vous ne pouvez pas utiliser de css nesteds comme dans votre exemple.
Vous pouvez utiliser addClass
et removeClass
dans votre jquery
.bodyOverflow() { overflow:hidden; }
Et en jquery
$('.popup').on('click', function(){ $('body').addClass('bodyOverflow'); });
Quelque chose comme ça?
DEMO http://jsfiddle.net/pwzaT/
$('button#show').on('click', function(){ $('.popup').fadeIn(300); $('body').css('overflow','hidden'); }); $('button#hide').on('click', function(){ $('.popup').fadeOut(300); $('body').css('overflow','auto'); });