2012-03-25 119 views
13

vì vậy tôi rất mới với Javascript và Jquery. Điều tôi muốn tạo là trang hai cột, trong đó các liên kết ở cột bên trái sẽ làm cho div ở bên phải trượt theo chiều ngang từ trái sang phải và trượt ra khỏi chế độ xem khi được nhấp lại. Tôi biết tôi cần phải sử dụng hiệu ứng trượt chuyển đổi nhưng tôi gặp sự cố khi triển khai nó theo cách mà mỗi liên kết riêng lẻ tạo ra một div khác nhau để trượt ... Tôi đã cố gắng tinh chỉnh một vài jsfiddles mà tôi đã tìm thấy thông qua tìm kiếm google nhưng Tôi khá bị mất khi nói đến javascript.Trượt div theo chiều ngang với JQuery

Cho đến nay, đây là điều duy nhất tôi có thể chỉnh sửa thành công ... http://jsfiddle.net/bridget_kilgallon/HAQyK/
nhưng những trang này theo chiều dọc và tải tất cả các div khi được nhấp.

Dưới đây là một fiddle Tôi đã tạo cho pagelayout tôi muốn mà không cần bất kỳ javascript ... http://jsfiddle.net/bridget_kilgallon/NhanG/

Xin giúp! :) -Bridget

Trả lời

34

Thật không may là không có hoạt ảnh trượt 'ngang' sẵn sàng với jQuery. Trừ khi bạn đi với các gói lớn hơn như jQuery UI. Nhưng tôi không nghĩ điều đó là cần thiết.

Điều duy nhất bạn muốn là sử dụng sáng tạo chức năng animate() trong jQuery để đạt được hiệu quả.

Tôi không biết cái nào bạn muốn đi với từ mô tả là mơ hồ vì vậy tôi làm 2 ví dụ cho các hiệu ứng phụ trong chuyển đổi bảng điều khiển:

http://jsfiddle.net/sg3s/rs2QK/ - bảng điều khiển một slide này mở cửa từ bên trái và để đóng sang bên phải

http://jsfiddle.net/sg3s/RZpbK/ - Trang trình bày mở từ trái sang phải và gần bên trái để mở cửa sổ mới.

Resources:

Bạn không thể làm điều này với CSS tinh khiết, chưa anyways. Sự hỗ trợ cho quá trình chuyển đổi là cơ bản và được giới hạn cho nhiều trình duyệt dựa trên webkit duy nhất. Vì vậy, kể từ khi bạn sẽ cần jQuery sử dụng thông minh của nó, nhưng bạn vẫn cần phải chắc chắn rằng bạn phong cách càng nhiều càng tốt với css trước khi bạn sử dụng JS. Lưu ý rằng tôi không sử dụng bất kỳ kiểu dáng/thao tác trực quan nào trong JS của mình.

+0

Fiddle đầu tiên là vừa phải. Tôi sẽ đảm bảo tạo css của tôi trước khi thêm tập lệnh như bạn đã đề xuất. Điều này chỉ làm cho cuộc sống của tôi dễ dàng hơn nhiều - cảm ơn bạn rất nhiều! : D –

+0

Hãy suy nghĩ về những gì bạn muốn làm và vị trí các yếu tố của bạn trong css cho phù hợp để họ đang ở vị trí tối ưu nhất để bắt đầu ngay khi cần thiết. – sg3s

+0

Đây là một fiddle với những gì tôi đã có cho đến nay css khôn ngoan: http://jsfiddle.net/bridget_kilgallon/sMDyB/4/ fiddle hoạt động tốt nhưng quá trình chuyển đổi không hoạt động trong dreamweaver .. Bất kỳ ý tưởng? Cảm ơn một lần nữa -BK –

1

Bạn có thể sử dụng mô-đun effects từ giao diện người dùng jQuery và sử dụng show('slide'). Hãy xem http://jsfiddle.net/HAQyK/1/

+0

Dưới đây là fiddle khác: http://jsfiddle.net/bridget_kilgallon/6eKGj/ Đây là gần như chính xác những gì tôi đang tìm kiếm trừ. .. 1. Tất cả các div xuất hiện khi liên kết được nhấp - tôi có thể liên kết với từng div riêng lẻ như thế nào? 2. Có cách nào để khiến div trượt ngược lại khi liên kết được nhấp lần thứ hai không? (tức là các trang trình bày ngay trên các trang trình bày nhấp chuột1 rời khỏi màn hình trên click2) –

2

Không sử dụng JavaScript, bạn bị giới hạn sử dụng chuyển tiếp CSS, nếu có. Và trong khi những điều này khá ấn tượng, chúng không đặc biệt tuyệt vời, cho đến nay tôi vẫn chưa tìm thấy, cho hoạt ảnh có điều kiện; về cơ bản chúng có thể sinh động từ điểm bắt đầu đến điểm khác và sau đó quay lại (dựa trên các sự kiện trình duyệt có sẵn trong chính trình duyệt), với JS bạn có thể thêm/xóa các lớp bổ sung và có các yếu tố div di chuyển xung quanh nội dung trái tim của bạn, nhưng không phải với CSS 'chỉ' (mặc dù tôi muốn được chứng minh là sai về điều này).

Điều tốt nhất tôi đã có thể đưa ra, cho đến nay, là:

#left { 
    float:left; 
    width:200px; 
} 
.right { 
    height: 0; 
    background-color: #fff; 
    margin-left: 205px; 
    overflow: hidden; 
    -webkit-transition: all 1s linear; 
    -ms-transition: all 1s linear; 
    -o-transition: all 1s linear; 
    -moz-transition: all 1s linear; 
    transition: all 1s linear; 
} 
.right:target { 
    display: block; 
    height: 5em; 
    background-color: #ffa; 
    -webkit-transition: all 1s linear; 
    -ms-transition: all 1s linear; 
    -o-transition: all 1s linear; 
    -moz-transition: all 1s linear; 
    transition: all 1s linear; 
}​ 

JS Fiddle demo.

Và điều này không trượt từ bên (mặc dù bạn có thể làm điều đó nếu bạn muốn) bởi vì nó không nhìn tốt, cho nội dung tái reflow rằng đã xảy ra như chiều rộng của phần tử thay đổi.


Sửa vì tôi nghĩ rằng tôi có thể đã hiểu sai một phần của câu hỏi ban đầu:

... Tôi muốn mà không cần bất kỳ javascript

Đó là trường hợp , và bình luận (bên dưới) dường như gợi ý rằng jQuery là một lựa chọn tốt, điều này có thể đáng giá như một minh chứng:

​$('#left a').click(
    function(){ 
     var div = $('div').not('#left').eq($(this).index('#left a')); 
     var others = $('div[data-visible="true"]'); 
     others.each(
      function(){ 
       $(this).animate({ 
        'left' : '2000px' 
       },1000,function(){ 
        $(this).removeAttr('style data-visible'); 
       }); 
      }); 
     if (div.attr('data-visible')) { 
      div.animate({ 
       'left' : '2000px' 
      },1000,function(){ 
       $(this).removeAttr('style data-visible'); 
      }); 
     } 
     else { 
      div.animate({ 
       'left' : '210px' 
      },1000).attr('data-visible',true); 
     } 
    });​​​​​​​​ 

JS Fiddle demo.

Tài liệu tham khảo:

+0

Rất tốt đẹp- cảm ơn bạn đã phản hồi! Tôi ấn tượng bạn không cần một kịch bản để làm điều này. Tôi biết bạn có thể sử dụng các chức năng animate để thay đổi chiều rộng của div để tạo ra một slide ngang nhưng tôi không điên về chiều rộng thay đổi nội dung cũng (tôi nghĩ đó là dòng chảy bạn đang đề cập đến). Tôi không phản đối việc sử dụng jquery để tạo trang trình bày - tôi chỉ mới làm quen với nó. Bạn có cơ hội biết một kịch bản sẽ tạo ra hiệu ứng này không? –

+0

Có; Tôi nghĩ rằng tôi hiểu lầm những gì bạn có nghĩa là khi tôi đọc "Tôi muốn mà không có bất kỳ javascript." ... đó là một ngày dài ... =/Và tôi không biết về một kịch bản có sẵn (mặc dù tôi nghi ngờ có rất nhiều), nhưng đây là một trong đó dường như làm việc. Nếu bạn thấy bản chỉnh sửa, hãy theo dõi '


'=) –

+0

rad. thật ngọt ngào! Vấn đề duy nhất sẽ là khi nhấp vào cùng một liên kết hai lần div slide tất cả các cách thức thông qua? –

0

Đây là mã mà bạn muốn. Nó được chứng minh là hoạt động trên IE, Safari, Chrome, Firefox, v.v.

Đây là phần HTML.

<div id="slide-wrap" style="width:1000px; height:200px; overflow:hidden; padding:0 auto;"> 
     <div id="inner-wrap" style="float:left;"> 
      <!-- 'Put Inline contains here like below.' --> 
      <div class='containBox' style="width:250px; height:100%; float:left; display:inline-block;"></div> 
      <!-- ... --> 
      <div class='containBox' style="width:250px; height:100%; float:left; display:inline-block;"></div> 
      <!-- 'Put Inline contains here like above.' --> 
     </div> 
     <div style="display: block; width:40px; height:60px; position: absolute; margin-left:0px; margin-top:40px"> 
      <img id='scroll_L_Arrow' src='../assets/img/l-arrow.png' onclick="scrollThumb('Go_L')"/> 
     </div> 
     <div style="display: block; width:40px; height:60px; position: absolute; margin-left:960px; margin-top:40px"> 
      <img id='scroll_R_Arrow' src='../assets/img/r-arrow.png' onclick="scrollThumb('Go_R')"/> 
     </div> 
    </div> 

Đây là phần jQuery trong hàm JavaScript.

 function scrollThumb(direction) { 
     if (direction=='Go_L') { 
      $('#slide-wrap').animate({ 
       scrollLeft: "-=" + 250 + "px" 
      }, function(){ 
       // createCookie('scrollPos', $('#slide-wrap').scrollLeft()); 
      }); 
     }else 
     if (direction=='Go_R') { 
      $('#slide-wrap').animate({ 
       scrollLeft: "+=" + 250 + "px" 
      }, function(){ 
       // createCookie('scrollPos', $('#slide-wrap').scrollLeft()); 
      }); 
     } 
     } 

Để ẩn các mũi tên, vui lòng xem tại đây. Detect end of horizontal scrolling div with jQuery

0
$(function() { 
$("#wizardV").steps({ 
    headerTag: "h2", 
    bodyTag: "section", 
    transitionEffect: "slideLeft", 
    stepsOrientation: "vertical" 
}); 
}); 

* // Wizard là một div chứa tất cả các nội dung của bạn

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