2010-09-02 2 views

Antwort

137

Sie die Resize-Set konnte handles option nur auf der linken und rechten zu zeigen (oder Ost/West), wie folgt aus:

foo.resizable({ 
    handles: 'e, w' 
});​ 

You can give it a try here.

+7

Ich habe gerade einen Vorbehalt mit dieser Lösung.Es wird immer noch die Breite und Höhe als Inline-Stil gesetzt. Dies verursacht Probleme mit einer vertikalen Lösung. Sobald ich die Größe geändert habe, ist die Breite eingestellt und es ist nicht mehr 100% (aber ein px Wert). Setzen Sie das hier für den Fall, dass andere suchen und stoßen Sie darauf. – Fernker

+0

@Fernker Ja, das ist ein Schmerz. – Ben

+0

Sie erhalten eine prozentuale Breite zurück, wenn Sie Ihrem div Eigenschaften mit minimaler Breite und maximaler Breite mit demselben Wert geben. Es wird nicht überschrieben werden :) –

9

Die Lösung ist Ihr resizable so zu konfigurieren, dass es bricht Änderungen der Dimension, die Sie nicht möchten.

hier ist ein Beispiel für nur vertikal resizable:

foo.resizable({ 
    resize: function(event, ui) { 
    ui.size.width = ui.originalSize.width; 
    }  
}); 
+0

Wäre das nicht auch ein bisschen hässlich? – Diego

+0

Ich mag diese Lösung. –

+2

Griffe ist die beste Lösung – Alexandre

23

Während das Plakat vor allem für eine Horizontal nur gefragt wurde vergrößert, verkleinert, stellt sich die Frage für die vertikale fragen, auch.

Der vertikale Fall hat ein spezielles Problem: Sie haben möglicherweise eine relative Breite (z. B. 50%) festgelegt, die Sie beibehalten möchten, auch wenn das Browserfenster in der Größe geändert wird. Allerdings legt jQuery UI eine absolute Breite in px fest, sobald Sie das Element zum ersten Mal skalieren und die relative Breite verloren geht.

Wenn Sie den folgenden Code gefunden für diesen Anwendungsfall zu arbeiten:

$("#resizable").resizable({ 
    handles: 's', 
    stop: function(event, ui) { 
     $(this).css("width", ''); 
    } 
}); 

Siehe auch http://jsfiddle.net/cburgmer/wExtX/ und jQuery UI resizable : auto height when using east handle alone

+1

Sehr interessant, danke. Ich merke es mir. Ich denke, es ist wichtig zu bemerken, dass die Größe des resizierbaren Elements durch css festgelegt werden muss, wenn es nach der Größenänderung nicht verloren geht. Sehen Sie hier http://jsfiddle.net/paska/wExtX/10/ – Diego

+1

Dies ist die Lösung, nach der ich gesucht habe. Aus irgendeinem Grund, obwohl das Handle für die Region deaktiviert ist, scheinen die Dimensionen immer noch auf px eingestellt zu sein. Wenn Sie diese Methode nicht verwenden, verlieren Sie Ihre% basierte Höhe oder Breite. – Serhiy

+0

danke, ich habe eine Lösung. –

16

Eine sehr einfache Lösung:

$(".selector").resizable({ grid: [1, 10000] }); // horizontal 
$(".selector").resizable({ grid: [10000, 1] }); // vertical 

Das für ziehbar arbeitet() auch. Beispiel: http://jsfiddle.net/xCepm/

+1

Es ist wirklich hässlich !! Auch die richtige Lösung (die, die wir verwenden sollen) ist @Nick Cravers – Diego

+1

Ich stimme zu! :-) Aber es ist schön, dass es mit resizable() und ziehbarem() funktioniert. – Jan

+0

Ja, das stimmt! – Diego

0

Ich wollte die Größe neu bestimmt die Breite, wenn Browser Wieder Größen ermöglichen, aber nicht, wenn der Benutzer die Größe des Elements ändert, diese fein gearbeitet:

foo.first().resizable({ 
    resize: function(event, ui) { 
    ui.element.css('width','auto'); 
    }, 
}); 
0

Für mich Lösungen mit beiden Griffen und resize Handler hat gut funktioniert, so Benutzer sehen Griff, kann aber nur horizontal ändern, sollte ähnliche Lösung für die vertikale arbeiten. Ohne unteren rechten Handler Benutzer möglicherweise nicht bewusst, dass er Größe Element ändern kann.

Bei der Verwendung von ui.size.height = ui.originalSize.height; wird nicht ordnungsgemäß funktionieren wenn Element seine Größe vom Ausgangszustand geändert hat.

foo.resizable({ 
    // Handles left right and bottom right corner 
    handles: 'e, w, se', 
    // Remove height style 
    resize: function(event, ui) { 
     $(this).css("height", ''); 
    } 
}); 

Für eine bessere Leistung $(this) entfernt werden könnte:

var foo = jQuery('#foo'); 
foo.resizable({ 
    // Handles left right and bottom right corner 
    handles: 'e, w, se', 
    // Remove height style 
    resize: function(event, ui) { 
     foo.css("height", ''); 
    } 
}); 
0
Successfully working div position Vertically and horizontally 
------------------------------------------------------------- 

<head> 

    <style> 
    .resizable { 
     height: 100px; 
     width: 500px; 
     background: #09C; 
    } 
    .resizable-x { 
     height: 100px; 
     width: 500px; 
     background: #F60; 
    } 
    </style> 

    <script> 
    $(function() { 

     $(".resizable").resizable({ 
      grid: [10000, 1] 
     }); 

     $(".resizable-x ").resizable({ 
      grid: [1, 10000] 
     }); 


     $(".resizable").draggable(); 
     }); 

     }); 
     </script>`enter code here` 
    </head> 

    <body> 
    <div class="resizable"></div> 
    <div class="resizable-x"></div> 
    </body> 
Verwandte Themen