Bạn có thể làm động css thuộc tính hiển thị không?
Với màn hình thuộc tính CSS. không có phần tử nào có thể bị xóa khỏi trang được hiển thị. Thật không may, các chuyển đổi CSS trên thuộc tính hiển thị, có thể được sử dụng để loại bỏ dần một phần tử, không được CSS1 hỗ trợ và hơn nữa, việc đặt thuộc tính hiển thị cũng hủy chuyển đổi trên tất cả các thuộc tính khác Show
Bài viết này đưa ra nhiều cách giải quyết khác nhau cho những hạn chế này mà tôi. e. quá trình chuyển đổi dần dần làm cho một yếu tố biến mất với các hiệu ứng hình ảnh khác nhau Cách giải quyết độ mờ đơn giản (nhưng không đầy đủ)Trong các trường hợp đơn giản, có thể sử dụng thuộc tính độ mờ thay vì thuộc tính hiển thị, dẫn đến hiệu ứng mờ dần. Đặt độ mờ thành 0 làm cho một phần tử hoàn toàn trong suốt và do đó làm cho nó biến mất . cl0 { độ mờ. 0; . độ mờ 1 giây; Di chuột lên trên dòng này để lại không gian trống, lỗi trên IE8 và bắt các sự kiện trong suốt Di chuột lên trên dòng nàyđể lại không gian trống, không thành công trên IE8 và bắt các sự kiện trong khi trong suốt Phương pháp này có 3 hạn chế quan trọng
Giải pháp tốt hơn và các hiệu ứng hình ảnh khácNếu bạn đang tìm giải pháp loại bỏ khoảng trống bằng cách di chuyển lên trên nội dung sau, hãy tiếp tục đọc bài viết này. Nếu không, vui lòng tham khảo bài viết Khả năng hiển thị chuyển tiếp CSS, giải thích cách thực hiện các hiệu ứng hình ảnh khác nhau làm cho một phần tử dần dần xuất hiện hoặc biến mất Chuyển tiếp CSS trên thuộc tính Chiều caoÝ tưởng là để mô phỏng một màn hình. none bằng cách đặt chiều cao của phần tử nội dung thành 0 và sau đó trượt vào phần tử bằng cách đặt chiều cao thành bình thường Điều này hoạt động tốt, miễn là chiều cao của phần tử được cố định và đã biết. Cần chỉ định chiều cao dưới dạng số trong biểu định kiểu. Thật không may, quá trình chuyển đổi không còn hoạt động nếu chiều cao. tự động hoặc chiều cao. 100% được chỉ định (trừ khi phần tử gốc có chiều cao cố định). Trong ví dụ bên dưới, chúng tôi đã sử dụng chiều cao là 100px, để lại một khoảng trống thừa sau Dòng 2 . chiều cao cl1 {. 0px; . chiều cao; thời lượng chuyển tiếp. 1s; . ẩn giấu} . bên ngoài1. bay lượn. cl1 { chiều cao. 100px} Đây là đoạn đầu tiên trước văn bản mẫu.
Di chuột vào đây Đây là đoạn thứ hai sau mẫu mẫu. Đây là một đoạn đầu tiên trước văn bản mẫu Đây là một đoạn thứ hai sau mẫu CSS Transitions sử dụng thuộc tính Max-HeightĐối với chiều cao, ý tưởng là mô phỏng màn hình. none bằng cách đặt chiều cao tối đa của phần tử thành 0 và sau đó trượt vào phần tử bằng cách đặt chiều cao tối đa thành bình thường Ưu điểm của chiều cao tối đa so với chiều cao là trong trường hợp chiều cao tối đa quá lớn, không có khoảng trống thừa nào xuất hiện, vì chiều cao tối đa chỉ giới hạn chiều cao của hộp nội dung chứ không làm cho nó lớn hơn yêu cầu. Vì vậy, có thể đặt chiều cao tối đa thành giá trị cao lớn hơn phần tử nội dung lớn nhất có thể . cl4 { chiều cao tối đa. 0px; . chiều cao tối đa 1 giây; . bên ngoài4. bay lượn. cl4 { chiều cao tối đa. 100px} Đây là đoạn đầu tiên trước văn bản mẫu.
Di chuột vào đây Đây là đoạn thứ hai sau mẫu mẫu. Đây là một đoạn đầu tiên trước văn bản mẫu Đây là một đoạn thứ hai sau mẫu Vì vậy, lợi thế của việc sử dụng chiều cao tối đa là chiều cao của phần tử nội dung không cần phải biết và cố định. Nó là đủ để sử dụng một giới hạn trên, tôi. e. một giá trị chiều cao cao hơn phần tử nội dung có thể nhận được Tuy nhiên, vấn đề là nếu giới hạn trên được sử dụng cho chiều cao tối đa lớn hơn đáng kể so với chiều cao thực, thì phải mất thời gian chạy chuyển tiếp đáng kể để tạo hiệu ứng cho chiều cao tối đa từ giới hạn trên xuống chiều cao thực. Điều này xuất hiện dưới dạng độ trễ không mong muốn trước khi quá trình chuyển đổi kết thúc (mặc dù quá trình chuyển đổi đang chạy và tạo hoạt ảnh cho chiều cao tối đa không có hiệu ứng hình ảnh cho đến khi chiều cao tối đa giới hạn chiều cao thực tế. ) Ngoài ra, do chức năng thời gian chuyển đổi áp dụng cho quá trình chuyển đổi hoàn toàn của chiều cao tối đa và không chỉ phần hiển thị nên nó không xuất hiện đúng, nếu giới hạn trên và chiều cao thực hoàn toàn khác nhau Tóm lại, quá trình chuyển đổi chiều cao tối đa hoạt động tốt, nếu một người biết giới hạn trên gần nhất của chiều cao của phần tử nội dung, nhưng điều đó trở nên khó khăn, nếu bạn không biết gì về nội dung, e. g. bởi vì nó chứa dữ liệu không xác định Chuyển đổi CSS trên thuộc tính Margin-Top/Margin-DottomBằng cách đặt trực tiếp phần tử nội dung vào một phần tử khác có tràn. ẩn và sử dụng giá trị âm cho lề-Trên hoặc lề-Dưới, có thể cắt bỏ phần trên hoặc dưới của thành phần nội dung. Bằng cách sử dụng giá trị âm của lề-Trên hoặc lề-Dưới (giá trị tuyệt đối của) lớn hơn chiều cao của phần tử nội dung, phần tử nội dung biến mất hoàn toàn . cl2 { chuyển tiếp. 1 lề-đầu; . ‑200px;} . bên ngoài2. bay lượn. giữa2. cl2 { lề-đầu. 0px} . giữa2 { tràn. ẩn giấu } Đây là một đoạn trước ví dụ thứ hai
Di chuột vào đây Đây là một đoạn sau mẫu thứ hai. Đây là một đoạn trước văn bản ví dụ thứ hai Văn bản mẫu Văn bản mẫu Văn bản mẫu Văn bản mẫu Đây là một đoạn sau mẫu thứ hai Giải pháp này thoạt nhìn có một nhược điểm tương tự như giải pháp chiều cao tối đa, tôi. e. người ta phải tìm một giới hạn trên tốt cho chiều cao tối đa của hộp nội dung và nếu giới hạn trên quá lớn, thì sẽ có một số vấn đề về thời gian. Với Margin-Top/Margin-Bottom, có độ trễ trước hoạt ảnh mở, trong khi với chiều cao tối đa, có độ trễ trước hoạt ảnh đóng Tuy nhiên, có thể mở rộng giải pháp này theo cách sau Chuyển đổi lề trên/lề-dưới kết hợp với chuyển đổi chiều caoNhư đã giải thích ở trên, để sử dụng quá trình chuyển đổi trên chiều cao tối đa hoặc trên lề trên/lề dưới như được mô tả trong đoạn trước, người ta cần cung cấp một giới hạn trên cho chiều cao tối đa của thành phần nội dung Nếu dự đoán sai và phần tử nội dung trở nên lớn hơn giá trị được sử dụng, thì phần tử nội dung sẽ không mở hoàn toàn trong trường hợp chiều cao tối đa và nó sẽ không biến mất hoàn toàn trong trường hợp lề trên/lề dưới Bây giờ, ý tưởng là kết hợp các giải pháp này và sử dụng chuyển đổi trên chiều cao tối đa để làm cho phần tử biến mất sau khi chuyển đổi. Sau đó, ngay cả khi lề trên/lề dưới không loại bỏ hoàn toàn chiều cao tối đa của phần tử sẽ Trong ví dụ sau, quá trình chuyển đổi lề-trên/lề-dưới được mô tả trong đoạn trước được kết hợp với một "sự chuyển đổi" trên thuộc tính chiều cao tối đa từ 0px thành 100%. Như đã giải thích ở trên, quá trình chuyển đổi trên chiều cao tối đa từ 0px sang 100% không hoạt động trơn tru, tuy nhiên, ít nhất nó sẽ mở và đóng phần tử ngay lập tức . cl7 { chuyển tiếp. lề‑đáy 1s dễ dàng vào; . bên ngoài7. bay lượn. giữa7. cl7 { chuyển tiếp. lề‑đáy 1s dễ dàng ra ngoài; . giữa7 { tràn. ẩn giấu; chuyển tiếp. chiều cao tối đa. 1 giây dễ dàng 1 giây; . 0px} chuyển tiếp. chiều cao tối đa. 1 giây dễ dàng 0 giây; Đây là một đoạn đoạn trước văn bản ví dụ thứ hai.
Di chuột vào đây Đây là một đoạn sau mẫu thứ hai. Đây là một đoạn trước văn bản ví dụ thứ hai Văn bản mẫu Văn bản mẫu Văn bản mẫu Đây là một đoạn sau mẫu thứ hai Để sử dụng phương pháp này, bạn vẫn cần đoán thứ gì đó như giới hạn trên, đối với chiều cao của thành phần nội dung, trong ví dụ là 150px. Tuy nhiên, nó không phải là điều đáng tiếc nếu giá trị được đoán quá nhỏ trong một số trường hợp, sau đó quá trình chuyển đổi mở đầu nhảy ở đầu và quá trình chuyển đổi kết thúc nhảy ở cuối, điều này có vẻ không tệ lắm (vui lòng thử ví dụ) Thêm hoạt ảnhGiờ đây, có thể thêm hoạt ảnh phát trong khi chiều cao của phần tử thay đổi dần. Ví dụ sau hiển thị một số hoạt ảnh WebGL™ và taccgl™ (yêu cầu bao gồm Thư viện taccGL) và các ví dụ bên dưới hiển thị một số chuyển đổi CSS trên thuộc tính biến đổi #el10 { đường viền. 1px màu đen liền khối; . màu vàng; #middle10 { tràn. ẩn giấu; . chiều cao 2s tuyến tính 0. 1s; Đây là một đoạn văn trước văn bản ví dụ. Văn bản Mẫu Văn bản Mẫu Văn bản mẫu Văn bản mẫu Đây là một đoạn văn sau ví dụ. Đây là một đoạn trước văn bản ví dụ Văn bản mẫu Văn bản mẫu Văn bản mẫu Văn bản mẫu Đây là một đoạn sau ví dụ var t = taccgl. diễn viên("el10",taccgl. flexiBorder,"hiển thị"); t. từ (t. x+(t. w/2), t. y,0). đến (t. x+(t. w-t. h)/2,t. y,0) thay đổi kích thước(1,1,t. h, t. h/2). Vòng tròn(). bắt đầu() tiếp(). Rect1(). bayHome(). thay đổi kích thước (t. h,t. h/2,t. w, t. h). bắt đầu(); t. el. phần tử cha mẹ. Phong cách. chiều cao = t. h+"px"; CHẠYvar t = taccgl. diễn viên("el10",taccgl. flexiBorder,"hidden"); t. thay đổi kích thước (t. w, t. h, t. w*2,t. h/2) đến (t. x-t. w/2, t. y,0). Vòng tròn1(). trong (1). bắt đầu(); t. tiếp(). thay đổi kích thước (t. w*2,t. h/2,t. w*4,1) đến (t. x-t. w*3/2,t. y,0). trong (1). bắt đầu(); t. el. phần tử cha mẹ. Phong cách. chiều cao="0px"; CHẠYt=taccgl. diễn viên("el10",null,"hiển thị"); t. thay đổi kích thước (t. w,1,t. w, t. h). trong (2). bắt đầu(); t. el. phần tử cha mẹ. Phong cách. chiều cao = t. h+"px"; CHẠYt=taccgl. diễn viên("el10",null,"hidden"); t. thay đổi kích thước (t. w, t. h,1,1). trong (2). bắt đầu(); t. el. phần tử cha mẹ. Phong cách. chiều cao="0px"; CHẠYtaccgl. một (tài liệu. cơ thể người). màu trắng"). ShadowOnly(). trong (2). bắt đầu(); var t=taccgl. diễn viên("el10",null,"hiển thị"). từ(-300,1000,4000) vEnd(0,0,0). thời lượng(2). bắt đầu() t. el. phần tử cha mẹ. Phong cách. chiều cao = t. h+"px"; CHẠYtaccgl. một (tài liệu. cơ thể người). màu trắng"). ShadowOnly(). trong (2). bắt đầu(); var t=taccgl. diễn viên("el10",null,"hidden"). đến(-400,1000,4000) vBegin(0,0,0). rotateMiddle(0,1,0). thời lượng(2). bắt đầu(); t. el. phần tử cha mẹ. Phong cách. chiều cao="0px"; CHẠYĐối với hoạt hình WebGL™, chúng tôi chỉ sử dụng giải pháp thay thế trên thuộc tính chiều cao như đã thảo luận đầu tiên trong bài viết này, vì với javaScript và taccgl™, giá trị giá trị chiều cao thực tế có sẵn là t. h. t. el. phần tử cha mẹ. Phong cách. chiều cao = t. h+"px";. Điều này hoạt động tốt, miễn là phần tử nội dung không tự động thay đổi chiều cao của nó. Nếu có, hãy sử dụng onEnd để đặt lại chiều cao thành tự động sau hoạt ảnh Đối với (các) hoạt ảnh CSS sau đây, chúng tôi đã sử dụng Chuyển đổi lề-trên/lề-dưới kết hợp với Giải pháp chuyển đổi chiều cao và thêm một chuyển đổi trên thuộc tính biến đổi . cl11 { chuyển tiếp. các 1s lề-dưới dẫn-vào, biến đổi 1s; biến đổi. xoay (150 độ); . bên ngoài11. bay lượn. trung11. cl11 { chuyển tiếp. các 1s lề-dưới dời, biến đổi 1s; . giữa11 { tràn. ẩn giấu; chuyển tiếp. chiều cao tối đa. 1 giây dễ dàng 1 giây; . 0px} . bên ngoài11. bay lượn. giữa11 { chuyển tiếp. chiều cao tối đa. 1 giây dễ dàng 0 giây; Đây là một đoạn đoạn trước văn bản ví dụ thứ hai.
Di chuột vào đây Đây là một đoạn sau mẫu thứ hai. Đây là một đoạn trước văn bản ví dụ thứ hai Văn bản mẫu Văn bản mẫu Văn bản mẫu Đây là một đoạn sau mẫu thứ hai Phần kết luậnChúng tôi đã chỉ ra nhiều cách giải quyết khác nhau cho các hiệu ứng chuyển tiếp trên màn hình CSS. không có tài sản, tôi. e. chuyển tiếp làm cho một phần tử xuất hiện hoặc biến mất theo cách mà các phần tử khác chiếm không gian của phần tử biến mất, e. g. bằng cách cuộn lên và xuống các yếu tố bên dưới Những thứ này kết hợp tốt với hoạt ảnh WebGL™ được tạo bằng taccgl™ nhờ đó quá trình chuyển đổi taccGL phát trên chính phần tử đó và quá trình chuyển đổi CSS di chuyển các phần tử HTML còn lại vào và ra khỏi không gian của phần tử biến mất hoặc xuất hiện WebGL™ là thương hiệu của Khronos Group Inc [1] Bản thảo làm việc chuyển đổi CSS không liệt kê thuộc tính hiển thị là một trong những thuộc tính có thể hoạt ảnh và do đó không thể chuyển đổi CSS trên thuộc tính đó Thuộc tính hiển thị có thể hoạt ảnh được không?Như bạn có thể đã biết, hiệu ứng chuyển tiếp và hoạt ảnh CSS cho phép bạn tạo hiệu ứng động cho một tập hợp các thuộc tính CSS cụ thể. Một trong những thuộc tính không thể hoạt ảnh là thuộc tính hiển thị .
Thuộc tính CSS nào có thể được làm động?Có thể tạo hoạt ảnh cho một số thuộc tính CSS nhất định bằng Hoạt ảnh CSS hoặc Chuyển tiếp CSS. . -moz-phác thảo-bán kính -moz-outline-radius-bottomleft -moz-outline-radius-bottomright -moz-outline-radius-topleft -moz-outline-radius-topright -ms-lưới-cột -ms-lưới-hàng -webkit-line-kẹp Chúng tôi có thể áp dụng chuyển tiếp trên màn hình trong CSS không?CSS không thể tạo hiệu ứng chuyển tiếp sử dụng hiển thị. không . Bạn có thể khắc phục hạn chế này bằng cách sử dụng kết hợp khả năng hiển thị. ẩn và chiều cao. 0 để làm cho nó "đủ gần. " Mặc dù các giải pháp này có thể ổn trong hầu hết các trường hợp, nhưng nó không hoàn toàn giống với việc sử dụng màn hình. không ai.
Có thể tạo hoạt ảnh cho một phần tử bằng CSS không?Hoạt ảnh cho phép một phần tử thay đổi dần từ kiểu này sang kiểu khác . Bạn có thể thay đổi bao nhiêu thuộc tính CSS tùy thích, bao nhiêu lần tùy thích. Để sử dụng hoạt ảnh CSS, trước tiên bạn phải chỉ định một số khung hình chính cho hoạt ảnh. Các khung hình chính giữ các kiểu mà phần tử sẽ có vào những thời điểm nhất định. |