2015-06-08 20 views
6

Chúng tôi có một số hộp để hiển thị một số dữ liệu khi di chuột. Vì vậy, khi chúng ta di chuyển chuột qua một phần tử, nó sẽ mở rộng, đi trước các phần tử khác và hiển thị dữ liệu ẩn.CSS: Ngăn chặn thuộc tính ảnh hưởng đến yếu tố cho đến khi kết thúc quá trình chuyển đổi

tôi đã làm một cái gì đó như thế này:

box:hover { 
    z-index: 50; 
} 

Nhưng có một vấn đề; Khi chúng tôi di chuyển chuột trên một khoảng trắng bên ngoài khác, giá trị z-index quay lại giá trị, giống như các giá trị khác. Vì vậy, nó có thể nhìn thấy rằng yếu tố lơ lửng là ở lớp thấp hơn so với phần tiếp theo.

Làm cách nào để ngăn chặn thuộc tính áp dụng cho đến khi kết thúc quá trình chuyển đổi?

Đây là số jsFiddle của tôi. Cố gắng di chuột qua một phần tử, di chuột ra khỏi phần tử và hình nền của các phần tử khác sẽ ở phía trước phần tử được di chuột của chúng tôi trước khi quá trình chuyển đổi kết thúc.

Cập nhật: đây là ảnh chụp màn hình của sự cố. Đây là khi chúng ta háo hức về yếu tố. background-image của một yếu tố khác xuất hiện trước phần tử được di chuột của chúng tôi.

Our problem! Check the jsFiddle link above

+0

Nó có thể là một tạo phẩm của trình duyệt của tôi (Safari Mac), nhưng tôi không hiểu vấn đề bạn mô tả. Tuy nhiên, với Chrome, tôi nhận được một nền màu đỏ, vì vậy tôi nghi ngờ CSS có thể được chiến thắng. –

+0

@MAGNAWS Đã thêm ảnh chụp màn hình để mô tả tình huống tốt hơn – mrReiha

+0

Điều đó không xảy ra trên trình duyệt của tôi (Safari, Chrome hoặc Firefox trên máy Mac). Tuy nhiên, Safari hiển thị nền hộp chính màu trắng. Tôi nghi ngờ rằng CSS bị hỏng. Bởi "bị hỏng", tôi không nhất thiết có nghĩa là "sai". Nó có thể ở trong một khu vực không xác định; nơi các trình duyệt khác nhau phản ứng khác nhau. Những gì tôi thường làm trong những trường hợp này, là cố gắng cấu trúc lại thành dạng đơn giản nhất có thể; đôi khi từ bỏ một số ưa thích trong quá trình (Nó là một hiệu ứng tốt đẹp, BTW). –

Trả lời

2

Thêm một sự chuyển tiếp cũng cho z-index, nhưng chèn một sự chậm trễ chỉ khi .box ở trạng thái bình thường.

Làm như vậy các z-index sẽ thay đổi istantly trên di chuột, trong khi trên hành động ngược lại (“unhover”) các z-index sẽ mất giá trị ban đầu của nó nhưng chỉ sau khi 0.5 giây (thời gian có hiệu lực mở rộng của bạn là 0.4 giây)

.box { 
    ... 
    z-index: 1; 
    -webkit-transition: z-index 0s .5s; 
     -moz-transition: z-index 0s .5s; 
      transition: z-index 0s .5s; 
} 

.box:hover { 
    -webkit-transition: z-index 0s 0s; 
     -moz-transition: z-index 0s 0s; 
      transition: z-index 0s 0s; 
    z-index: 50; 
} 

ví dụ: http://jsfiddle.net/yjg2oach/

+0

Fiddle đã chỉnh sửa của bạn (thứ hai) hoạt động hoàn hảo trong chrome, nhưng trên firefox, nó không thành công: ( – mrReiha

+0

@mrReiha đó là vì giá trị z-index ban đầu bị thiếu từ .box (và tùy thuộc vào phiên bản firefox, tiền tố '-moz-' cũng có thể cần thiết) – fcalderan

+0

Wow Tôi không biết 'z-index' có khả năng hoạt hình. Cảm ơn rất nhiều, – mrReiha

1

Thêm một thuộc tính chuyển đổi sang nhóm .box của bạn.

.box { 
    float: left; 
    position: relative; 
    width: 100px; 
    height: 100px; 
    margin: 10px; 
    margin-bottom: 35px; 
     transition: .4s; 
} 

Fixed fiddle

+0

Nó hoạt động hoàn hảo trên chrome, nhưng trên firefox, nó vẫn có vấn đề: ( – mrReiha

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