2015-03-10 12 views
5

http://eusville.com/eusVote/1/baltimore-sushijquery slideDown e slideUp dimena div

Fare clic sul pulsante "Commenta/Tasso Aggiungi". Mentre il riquadro dei commenti scorre verso il basso, la pagina si muove. Sono molto perplesso. Cercate su Google ma non riesci a trovare una soluzione.

La cosa strana è un problema in Chrome e Firefox. IE funziona senza problemi ...

Il div HTML è: ... scusate, c'è un sacco di roba da rasoio lì. Ignora semplicemente @s ...

jQuery fa scorrere questo Div su e giù.

Suggerimenti apprezzati! TIA.

$(".buttonAddCommentRate").click(function() {  
 
    var crBox = $(this).closest('.answer-container').find('.answer-commentRateBox');  
 
    var buttonText = $(this).text(); 
 

 
    if (buttonText == 'Add comment/rate') { 
 
     crBox.slideDown(300); 
 
     $(this).text('Cancel comment/rate'); 
 
    } 
 
    else { 
 
     crBox.slideUp(300); 
 
     $(this).text('Add comment/rate'); 
 
    } 
 
});
.answer-comment{ 
 
    width:600px; 
 
     float: left; 
 
} 
 
.answer-textArea{ 
 
    width: 500px; 
 
    height: 180px;  
 
} 
 

 
.answer-commentRateBox{ 
 
    display:none; 
 
    overflow: hidden; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="answer-container"> 
 
      <div class="answer-main"> 
 
       <h4>@Model.ElementAt(i).Title</h4> 
 

 
       @Model.ElementAt(i).Detail<br /><br /> 
 

 
       <button class="buttonAddCommentRate" data-id="@Model.ElementAt(i).AnswerID">Add comment/rate</button>&nbsp;&nbsp;&nbsp;&nbsp; 
 
       <span class="span-buttonAddCommentRate">Log in to comment and/or rate</span> 
 
      </div> 
 

 
      <div class="answer-eusScore"> 
 
       eusScore (<span class="answer-count">@Model.ElementAt(i).Count</span>)<br /><br /> 
 
       <span class="span-answer-eusScore">@(Math.Round((decimal)(Model.ElementAt(i).RatingScore)))%</span> 
 
      </div> 
 
      <div class="answer-thankYou"> 
 
       Rating/comment posted 
 
      </div> 
 

 
      <br style="clear:both" /> 
 

 
      <div class="answer-commentRateBox"> 
 
       <br /> 
 
       <div class="answer-comment"> 
 
        <textarea class="answer-textArea" placeholder="Comment must be more than 5 words ..."></textarea> 
 
       </div> 
 

 
       <div class="answer-rateIt"> 
 
        <input data-id="@Model.ElementAt(i).AnswerID" type="number" class="rating" min=0 max=5 step=0.5 data-size="sm"><br /> 
 
        <br /><br /> 
 
        <button class="buttonSubmit" disabled data-id="@Model.ElementAt(i).AnswerID">Submit</button>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<button class="buttonCancel">Cancel</button><br /> 
 
        <span id="span-enable-message" style="font-size:smaller">(rate to enable)</span> 
 
       </div> 
 
       <br style="clear:both" /> 
 
      </div> 
 

 
      <div> 
 
       @*displays the comments using a partial view*@ 
 
       @{Html.RenderAction("Comments", "Topic", new { answerID = @Model.ElementAt(i).AnswerID });} 
 
      </div> 
 

 
     </div> 
 

 
     <hr />

+1

rendere il corpo 'overflow: hidden' su slidedown e passare a' overflow: auto' dopo che scorre su –

+0

grazie amit, proverò quando torno a casa stasera. una cosa che noto al lavoro. chrome e firefox, se tengo CTRL e - key (per rimpicciolire), una volta raggiunta una certa dimensione dello schermo, il wiggle scompare. Ma se incremento/zoom sopra un certo livello, ritorna il movimento. BTW, IE ancora una volta splende e non ha problemi a prescindere dalle dimensioni dello schermo/dello zoom. Sperimenterà di più a casa dopo. Grazie ! Il suggerimento di overflow di – nanonerd

+0

non ha funzionato. Per quanto riguarda lo zoom in cromo, se lo ridurrò al 75%, l'oscillazione scompare. Oltre il 75%, il wiggle ritorna ... penso che abbia qualcosa a che fare con il display: nessuno quando la pagina si apre e su slidedown, cambia in display: block e c'è un wiggle. E al passaggio, torna alla visualizzazione: nessuno e c'è un guizzo. A proposito, se un commento è aperto, allora non c'è alcun movimento quando si fa clic sugli altri pulsanti di commento. – nanonerd

risposta

4

Il problema riscontrato che sta accadendo perché la pagina ottiene un'altezza più grande della finestra. Ciò significa che verrà visualizzata una barra di scorrimento.

Aggiungi questo al vostro CSS e sarà probabilmente risolvere il problema

html { 
    overflow-y: scroll; 
} 
+0

questa è la correzione di cui avevo bisogno. grazie a @ j08691 per aver indicato la causa e grazie a Kay per la correzione del codice. questo posizionerà automaticamente lo scroll del lato destro anche se inizialmente la pagina non è abbastanza alta. quindi non c'è più alcun movimento come appare la barra di scorrimento quando la pagina si allunga poiché la barra di scorrimento è già lì per iniziare. – nanonerd

+0

Funziona, ma penso che mostrarlo tutto il tempo sia fastidioso. Se è ovvio che il contenuto scorre puoi nasconderlo tutto il tempo. Ho aggiornato la mia risposta con il CSS. –

-2

Rimuovere l'argomento dal tuo slideDown() e slideUp() funzioni:

crBox.slideDown(); 
... 

crBox.slideUp(); 
+0

L'argomento è la velocità di animazione e rimuoverlo non dovrebbe risolvere il problema. –

+0

Che ha funzionato per lo stesso problema che ho avuto, ma per questo si dovrebbe vedere la risposta precedente. – TricksfortheWeb

2

La barra di scorrimento sta spingendo nella pagina sopra un po ' . Le due soluzioni sono che puoi sempre mostrare la barra di scorrimento o puoi sempre nasconderla.

Mostra sempre è:

body{ 
    overflow: scroll; 
} 

nascondere Sempre:

::-webkit-scrollbar { 
    display: none; 
} 

Se avete intenzione di nascondere sempre Vorrei anche aggiungere il codice "mostrare sempre". Il motivo è il codice "nascondi" che sovrascrive lo "mostra" e se il tuo browser non supporta il codice "mostra" esso gli dà una sorta di riserva.

+0

Sto cercando una soluzione IE. Lo posterò quando so che funziona. Per quanto ne so non c'è modo di nasconderlo su Firefox (c'era un modo che era stato rimosso). –

Problemi correlati