Edit: tôi đặt đoạn mã này trong jsbin: http://jsbin.com/eneruLàm thế nào để thay đổi kích thước theo chiều dọc một DIV chỉ với jQuery - không có plugin?
tôi đang cố gắng để thay đổi kích cỡ người dùng (chỉ theo chiều dọc) một phần tử DIV với jQuery. Tôi đọc về jQuery UI, tôi đã thử nó, và trong một vài phút, tôi đã làm việc đó. Nhưng thư viện đang thêm một khoản phí ~ 25KB mà tôi muốn tránh, vì tôi chỉ muốn thay đổi kích thước theo chiều dọc đơn giản.
Vì vậy, tôi đã cố gắng tự mình làm điều đó. Ở đây nó là HTML, Tôi đang sử dụng kiểu nội tuyến cho rõ ràng:
<div id="frame" style="border: 1px solid green; height: 350px">
<div style="height: 100%">Lorem ipsum blah blah</div>
<span id="frame-grip" style="display: block; width: 100%; height: 16px; background: gray"></span>
</div>
Như bạn thấy, có một chút thanh dưới mỗi thẻ DIV, vì vậy người dùng có thể kéo nó lên hoặc xuống để thay đổi kích thước DIV. Dưới đây là các mã Javascript (sử dụng jQuery):
$(document).ready(function(){
var resizing = false;
var frame = $("#frame");
var origHeightFrame = frame.height();
var origPosYGrip = $("#frame-grip").offset().top;
var gripHeight = $("#frame-grip").height();
$("#frame-grip").mouseup(function(e) {
resizing = false;
});
$("#frame-grip").mousedown(function(e) {
resizing = true;
});
$("#frame-grip").mousemove(function(e) {
if(resizing) {
frame.height(e.pageY - origPosYGrip + origHeightFrame - gripHeight/2);
}
});
});
Nó hoạt động, nhiều hơn hoặc ít hơn, nhưng nếu bạn kéo thanh quá nhanh, nó dừng lại sau khi di chuyển chuột và phá vỡ tất cả mọi thứ.
Đây là lần đầu tiên tôi cố gắng làm điều gì đó nghiêm trọng (ahem) với JS và jQuery, vì vậy tôi có thể làm điều gì đó ngu ngốc. Nếu có, vui lòng cho tôi biết :)
Nếu bạn đã có nó hoạt động thì đừng lo lắng về điều đó. Lo lắng khi mọi người bắt đầu phàn nàn hoặc bạn có 5000 người dùng mỗi phút nhấn vào trang web và nó bắt đầu làm bạn mất tiền. KHÔNG ĐƯỢC TỐI ƯU TỐI ƯU ĐÃI! – Soviut
Cảm ơn. Trên thực tế, trang web có khoảng 100.000 lượt xem trang hàng ngày và trang này đang phân phối gần 100 KB Javascript không nén. Tôi đặt trong giao diện người dùng jQuery, và khi được rút gọn và gzipped, nó nhỏ hơn trước :) –