2016-02-14 24 views
6

Đây là cách kéo phần tử rộng hơn so với phần tử cha (tràn: ẩn). Tùy chọn chiều rộng và tràn phụ huynh được cố định, không thể thay đổi.Ngăn chặn ngăn kéo jQuery có thể kéo ẩn Ẩn

HTML

<div class="container"> 
    <p class="text">The quick brown fox jumps over the lazy dog.</p> 
</div> 

CSS

.container { 
    position:relative; 
    width:300px; 
    height:50px; 
    background:#ccc; 
    overflow:hidden; // be careful, changing to overflow-x:hidden breaks the answer 
} 
.text { 
    position:absolute; 
    top:7px; 
    margin:0; 
    width:1000px; 
    font-size:30px; 
} 

jQuery

$('.text').draggable({ 
    axis: 'x', 
}) 

Sửa demo này: https://jsfiddle.net/jeafgilbert/LtkkzccL/

Vì vậy mà chúng ta có thể chỉ kéo câu mà không tạo khoảng trống trước hoặc sau câu.

Trả lời

4

Bạn có thể kiểm tra vị trí hiện tại của phần tử có thể kéo trong cuộc gọi lại drag và sau đó ghi đè vị trí nếu nó nằm ngoài giới hạn.

Nói cách khác, nếu vị trí bên trái lớn hơn 0, ghi đè vị trí bên trái và đặt lại thành 0 sao cho nó không bao giờ có thể vượt quá 0. Nếu chiều rộng của phần tử có thể kéo trừ đi độ rộng của phần tử gốc nhỏ hơn vị trí bên trái, hãy ghi đè lên vị trí bên trái để đặt nó trở lại chiều rộng bù.

Updated Example

$('.text').draggable({ 
 
    axis: 'x', 
 
    drag: function(event, ui) { 
 
    var left = ui.position.left, 
 
     offsetWidth = ($(this).width() - $(this).parent().width()) * -1; 
 

 
    if (left > 0) { 
 
     ui.position.left = 0; 
 
    } 
 
    if (offsetWidth > left) { 
 
     ui.position.left = offsetWidth; 
 
    } 
 
    } 
 
});
.container { 
 
    position: relative; 
 
    width: 300px; 
 
    height: 50px; 
 
    background: #ccc; 
 
    overflow: hidden; 
 
} 
 
.text { 
 
    position: absolute; 
 
    top: 7px; 
 
    margin: 0; 
 
    white-space: nowrap; 
 
    font-size: 30px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script type="text/javascript" src="//code.jquery.com/ui/1.9.2/jquery-ui.js"></script> 
 
<div class="container"> 
 
    <p class="text">The quick brown fox jumps over the lazy dog.</p> 
 
</div>

+0

Cảm ơn bạn, Josh Crozier! –

+0

Btw, lực kéo văn bản sang bên phải làm cho văn bản nhảy đến cuối. Tôi đã thêm chiều rộng của cha mẹ để thấy nó dễ dàng hơn (https://jsfiddle.net/jeafgilbert/vom7tpo9/1/). –

+0

@JeafGilbert Tốt bắt - cập nhật -> https://jsfiddle.net/hLfazg3b/ –

Các vấn đề liên quan