Css mở rộng đường viền ngoài phần tử
Thuộc tính Show
Mẹo. Ngoài ra, hãy xem thuộc tính hình ảnh đường viền (thuộc tính tốc ký để đặt tất cả các thuộc tính hình ảnh đường viền-*) Đưa ra bản chạy thử ❯ Giá trị mặc định. 0Kế thừa. không có hoạt ảnh. không. Đọc về animatableVersion. Cú pháp CSS3JavaScript. mục tiêu. Phong cách. borderImageOutset="10px" Hãy dùng thử Hỗ trợ trình duyệtCác số trong bảng chỉ định phiên bản trình duyệt đầu tiên hỗ trợ đầy đủ thuộc tính Thuộc tính Border-image-outset 15. 011. 015. 06. 015. 0 Cú pháp CSSđường viền-hình ảnh-outset. chiều dài. số. ban đầu. thừa kế; Ghi chú. Thuộc tính Giá trị tài sảnGiá trịMô tảPlay itlengthMột đơn vị độ dài chỉ định khoảng cách từ các cạnh mà hình ảnh đường viền sẽ xuất hiện. Giá trị mặc định là 0Demo ❯số Biểu thị bội số của độ rộng đường viền tương ứngDemo ❯initialĐặt thuộc tính này thành giá trị mặc định của nó. Đọc về khởi tạo Kế thừa thuộc tính này từ phần tử cha của nó. Đọc về thừa kế Gần đây tôi đã nhận thấy một thay đổi thú vị trên CodePen. khi di bút trên trang chủ, có một hình chữ nhật với các góc tròn mở rộng ở phía sau Mở rộng hiệu ứng hộp trên trang chủ CodePenLà một sinh vật tò mò, tôi phải kiểm tra xem nó hoạt động như thế nào. Hóa ra, hình chữ nhật ở phía sau là một phần tử giả 1 được định vị tuyệt đối 1 phong cách ban đầu. Phần bù dương đi vào trong từ giới hạn 3 của cấp độ gốc, trong khi phần bù âm đi ra ngoàiTrên 4, phần bù của nó bị ghi đè và kết hợp với 5, chúng tôi nhận được hiệu ứng hộp mở rộngPhong cách 1 trên 4Thuộc tính 8 có cùng giá trị ( 9) trong cả bộ quy tắc ban đầu và bộ quy tắc 4, vì vậy không cần thiết phải ghi đè lên nó, nhưng tất cả các phần bù khác di chuyển theo ____10_______1 ra ngoài (từ 2 đến 9 đối với phần bù 4 và 5 và từ 9 Một điều cần lưu ý ở đây là phần tử giả 1 có 0 của 1 được giữ nguyên khi nó mở rộng. Điều đó khiến tôi phải suy nghĩ về những phương pháp chúng ta có để mở rộng/thu nhỏ các phần tử (giả-) trong khi vẫn giữ nguyên 0 của chúng. Bạn có thể nghĩ ra bao nhiêu? Thay đổi độ lệchĐây là phương pháp được sử dụng trên CodePen và nó hoạt động rất tốt trong tình huống cụ thể này vì nhiều lý do. Trước hết, nó có sự hỗ trợ tuyệt vời. Nó cũng hoạt động khi phần tử mở rộng (giả) đáp ứng, không có kích thước cố định, đồng thời, mức độ mở rộng của nó là cố định (giá trị 3). Nó cũng hoạt động để mở rộng theo nhiều hướng (_______10_______4, 8 và 5 trong trường hợp cụ thể này)Tuy nhiên, có một vài lưu ý chúng ta cần lưu ý Đầu tiên, phần tử mở rộng của chúng ta không thể có 7. Đây không phải là vấn đề trong ngữ cảnh của trường hợp sử dụng CodePen vì phần tử giả 1 dù sao cũng cần được định vị tuyệt đối để được đặt bên dưới phần còn lại của nội dung gốc nàyThứ hai, quá nhiệt tình với hoạt ảnh bù đắp (cũng như nói chung, tạo hoạt ảnh cho bất kỳ thuộc tính nào ảnh hưởng đến bố cục với thuộc tính hộp theo cách mà hiệu suất, lề, độ rộng đường viền, phần đệm hoặc kích thước thực hiện) có thể tác động tiêu cực đến hiệu suất. Một lần nữa, đây không phải là điều đáng lo ngại ở đây, chúng tôi chỉ có một chút 5 trên 4, không có gì to tátThay đổi kích thướcThay vì thay đổi độ lệch, chúng ta có thể thay đổi kích thước. Tuy nhiên, đây là một phương pháp hoạt động nếu chúng ta muốn phần tử (giả-) của mình mở rộng theo nhiều nhất là hai hướng. Mặt khác, chúng ta cũng cần thay đổi độ lệch. Để hiểu rõ hơn về điều này, hãy xem xét tình huống CodePen mà chúng ta muốn các phần tử giả 1 của mình mở rộng theo ba hướng ( 4, 8 và 5)Thông tin kích thước ban đầu có liên quan như sau
Vì các độ lệch đối lập (các cặp 4– 8 và 5– 8) triệt tiêu lẫn nhau ( 9), kết quả là kích thước của phần tử giả bằng với kích thước của phần tử gốc của nó (hoặc 0 kích thước của phần tử gốc)Vì vậy, chúng ta có thể viết lại ở trên như
Vào ngày 4, chúng tôi tăng 2 lên __10_______1 lên _______10_______5 và _______40_______5 lên _______40_______6, _______10_______1 lên _______10_______4 và _______10_______1 lên _________8. Tuy nhiên, chỉ viết
…là không đủ, vì điều này làm cho 5 tăng hướng đi xuống bởi 6 thay vì tăng nó lên bằng cách 1 lên và 1 xuống. Bản trình diễn sau đây minh họa điều này (đặt 5 trên hoặc di chuột qua các mục để xem phần tử giả 1 mở rộng như thế nào)Xem Bút của thebabydino (@thebabydino) trên CodePen Chúng tôi cũng cần cập nhật thuộc tính 4 để có được hiệu quả mong muốn
Cái nào hoạt động, như nó có thể được nhìn thấy dưới đây Xem Bút của thebabydino (@thebabydino) trên CodePen Nhưng, thành thật mà nói, điều này cảm thấy ít mong muốn hơn là chỉ thay đổi hiệu số Tuy nhiên, thay đổi kích thước là một giải pháp tốt trong một tình huống khác, chẳng hạn như khi chúng ta muốn có một số thanh có các góc tròn mở rộng/thu nhỏ theo một hướng Xem Bút của thebabydino (@thebabydino) trên CodePen Lưu ý rằng, nếu chúng ta không có các góc tròn để bảo toàn, giải pháp tốt hơn sẽ là sử dụng tỷ lệ định hướng thông qua thuộc tính 8Thay đổi phần đệm/độ rộng đường viềnTương tự như thay đổi kích thước, chúng ta có thể thay đổi 3 hoặc 0 (đối với 1 đó là 2). Lưu ý rằng, giống như việc thay đổi kích thước, chúng tôi cũng cần cập nhật độ lệch nếu mở rộng hộp theo nhiều hơn hai chiềuXem Bút của thebabydino (@thebabydino) trên CodePen Trong bản demo ở trên, hộp màu hồng đại diện cho ____63_______3 của phần tử giả __________1 và bạn có thể thấy nó giữ nguyên kích thước, điều này rất quan trọng đối với phương pháp này Để hiểu tại sao nó lại quan trọng, hãy xem xét giới hạn khác này. chúng ta cũng cần có kích thước hộp được xác định bởi hai độ lệch cộng với 2 và 5 thay vì sử dụng cả bốn độ lệch. Điều này là do 3/ 0 sẽ chỉ phát triển vào bên trong nếu chúng ta sử dụng bốn độ lệch thay vì hai cộng với 2 và 5Xem Bút của thebabydino (@thebabydino) trên CodePen Vì lý do tương tự, chúng tôi không thể có 1 trên phần tử giả 1 của chúng tôiXem Bút của thebabydino (@thebabydino) trên CodePen Bất chấp những hạn chế này, phương pháp này có thể hữu ích nếu phần tử mở rộng (giả) của chúng ta có nội dung văn bản mà chúng ta không muốn nhìn thấy di chuyển trên 4 như được minh họa bởi Bút bên dưới, trong đó hai ví dụ đầu tiên thay đổi độ lệch/kích thước Xem Bút của thebabydino (@thebabydino) trên CodePen Thay đổi lềSử dụng phương pháp này, trước tiên, chúng tôi đặt độ lệch thành giá trị trạng thái 4 và 5 để bù và cung cấp cho chúng tôi kích thước trạng thái ban đầu
Sau đó, chúng tôi zero cái này 5 trên 4
Xem Bút của thebabydino (@thebabydino) trên CodePen Đây là một cách tiếp cận khác phù hợp với tình huống CodePen, mặc dù tôi thực sự không thể nghĩ ra các trường hợp sử dụng khác. Cũng lưu ý rằng, giống như thay đổi độ lệch hoặc kích thước, phương pháp này ảnh hưởng đến kích thước của 3, do đó, bất kỳ nội dung văn bản nào chúng tôi có thể đã được di chuyển và sắp xếp lạiThay đổi kích thước phông chữĐây có lẽ là cách khó nhất và có rất nhiều hạn chế, trong đó quan trọng nhất là chúng ta không thể có nội dung văn bản trên phần tử thực (giả-) mở rộng/thu nhỏ — nhưng đó là một phương pháp khác sẽ hoạt động tốt trong trường hợp CodePen Ngoài ra, bản thân 9 không thực sự làm bất cứ điều gì để làm cho hộp mở rộng hoặc thu nhỏ. Chúng ta cần kết hợp nó với một trong những thuộc tính đã thảo luận trước đóVí dụ: chúng ta có thể đặt 9 trên 1 bằng với 2, đặt phần bù cho trường hợp mở rộng và đặt lề 03 tương ứng với sự khác biệt giữa trạng thái mở rộng và trạng thái ban đầu
Sau đó, vào ngày 4, chúng tôi đưa 9 đến 06
Xem Bút của thebabydino (@thebabydino) trên CodePen Chúng ta cũng có thể sử dụng 9 với hiệu số, mặc dù nó phức tạp hơn một chút
Tuy nhiên, điều quan trọng là nó hoạt động, như có thể thấy bên dưới Xem Bút của thebabydino (@thebabydino) trên CodePen Kết hợp 9 với kích thước thậm chí còn phức tạp hơn, vì chúng ta cũng cần thay đổi giá trị bù dọc trên 4 trên tất cả mọi thứ
Oh, tốt, ít nhất nó hoạt động Xem Bút của thebabydino (@thebabydino) trên CodePen Điều tương tự cũng xảy ra khi sử dụng 9 với 3/ 0 0Xem Bút của thebabydino (@thebabydino) trên CodePen Thay đổi quy môNếu bạn đã đọc các phần về hiệu suất của 13, thì có lẽ bạn đã đọc rằng tốt hơn là nên tạo hiệu ứng chuyển đổi thay vì các thuộc tính ảnh hưởng đến bố cục, như độ lệch, lề, đường viền, phần đệm, kích thước - gần như những gì chúng tôi đã sử dụng cho đến nayVấn đề đầu tiên nổi bật ở đây là việc chia tỷ lệ một phần tử cũng chia tỷ lệ làm tròn góc của nó, như minh họa bên dưới Xem Bút của thebabydino (@thebabydino) trên CodePen Chúng ta có thể giải quyết vấn đề này bằng cách nhân rộng 0 theo cách khácGiả sử chúng tôi chia tỷ lệ một phần tử theo hệ số 15 dọc theo trục x và theo hệ số 16 dọc theo trục y và chúng tôi muốn giữ giá trị 0 của nó ở một giá trị không đổi 18Điều này có nghĩa là chúng ta cũng cần chia 18 cho hệ số tỷ lệ tương ứng dọc theo mỗi trục 1Xem Bút của thebabydino (@thebabydino) trên CodePen Tuy nhiên, lưu ý rằng với phương pháp này, chúng tôi cần sử dụng các hệ số tỷ lệ chứ không phải số lượng mà chúng tôi mở rộng phần tử (giả-) của mình theo hướng này hoặc hướng kia. Có thể lấy các hệ số tỷ lệ từ thứ nguyên và lượng mở rộng, nhưng chỉ khi chúng được biểu thị bằng các đơn vị có mối quan hệ cố định nhất định giữa chúng. Mặc dù bộ tiền xử lý có thể kết hợp các đơn vị như 20 hoặc 21 do thực tế là 22 luôn là 23, nhưng chúng không thể giải quyết được bao nhiêu 24 hoặc 25 hoặc 26 hoặc 27 trong 21 vì chúng thiếu ngữ cảnh. Và 29 cũng không phải là một giải pháp, vì nó không cho phép chúng tôi chia một giá trị độ dài cho một giá trị độ dài khác để có được hệ số tỷ lệ không có đơn vịĐây là lý do tại sao chia tỷ lệ không phải là một giải pháp trong trường hợp CodePen, trong đó các hộp 1 có kích thước phụ thuộc vào chế độ xem, đồng thời, mở rộng theo lượng 3 cố địnhNhưng nếu số lượng tỷ lệ của chúng tôi được cung cấp hoặc chúng tôi có thể dễ dàng tính toán nó, thì đây là một tùy chọn để xem xét, đặc biệt là vì việc tạo các thuộc tính tùy chỉnh cho các yếu tố tỷ lệ mà chúng tôi sau đó tạo hiệu ứng bằng một chút phép thuật Houdini có thể đơn giản hóa mã của chúng tôi rất nhiều 2Lưu ý rằng Houdini chỉ hoạt động trong trình duyệt Chromium có bật cờ tính năng Nền tảng web thử nghiệm Ví dụ: chúng ta có thể tạo hoạt ảnh lưới ô vuông này Hoạt ảnh lưới ô xếp vòng lặp (Bản trình diễn, chỉ dành cho Chrome có cờ)Các viên gạch hình vuông có chiều dài cạnh là 32 và góc làm tròn là 33 3Chúng tôi đăng ký hai thuộc tính tùy chỉnh của chúng tôi 4Và sau đó chúng ta có thể làm động chúng 5Cuối cùng, chúng tôi thêm độ trễ tùy thuộc vào chỉ số lưới ngang ( 34) và dọc ( 35) để tạo hiệu ứng 13 so le 6Một ví dụ khác là ví dụ sau, trong đó các dấu chấm được tạo với sự trợ giúp của các phần tử giả Hình ảnh động tăng đột biến của vòng lặp (Bản trình diễn, chỉ dành cho Chrome có cờ)Vì các phần tử giả được chia tỷ lệ cùng với cha mẹ của chúng, nên chúng ta cũng cần đảo ngược biến đổi tỷ lệ trên chúng 7Thay đổi… clip-path?Đây là một phương pháp tôi thực sự thích, mặc dù nó không hỗ trợ trước Chromium Edge và Internet Explorer Gần như mọi ví dụ sử dụng của 37 đều có giá trị 38 hoặc giá trị tham chiếu SVG. Tuy nhiên, nếu bạn đã xem một số bài viết trước đây của tôi, thì bạn có thể biết có những hình dạng cơ bản khác mà chúng ta có thể sử dụng, chẳng hạn như 39, hoạt động như minh họa bên dướiCách thức hoạt động của hàm 39. (Thử nghiệm)Vì vậy, để tái tạo hiệu ứng CodePen bằng phương pháp này, chúng tôi đặt giá trị bù đắp 1 thành các giá trị trạng thái được mở rộng và sau đó cắt bỏ những gì chúng tôi không muốn thấy với sự trợ giúp của 37 8Và sau đó, ở trạng thái 4, chúng tôi bỏ tất cả các phần phụ 9Điều này có thể được nhìn thấy trong hành động dưới đây Xem Bút của thebabydino (@thebabydino) trên CodePen Được rồi, cách này hiệu quả, nhưng chúng tôi cũng cần làm tròn một góc. May mắn thay, 39 cũng cho phép chúng tôi chỉ định giá trị đó là bất kỳ giá trị 0 nào mà chúng tôi có thể muốnỞ đây, một 1 cho tất cả các góc dọc theo cả hai hướng sẽ làm được 0Và điều này mang lại cho chúng tôi chính xác những gì chúng tôi đang làm Xem Bút của thebabydino (@thebabydino) trên CodePen Hơn nữa, nó không thực sự phá vỡ bất cứ thứ gì trong các trình duyệt không hỗ trợ, nó chỉ luôn ở trạng thái mở rộng Tuy nhiên, mặc dù đây là phương pháp hoạt động tốt cho nhiều tình huống — bao gồm cả trường hợp sử dụng CodePen — nhưng nó không hoạt động khi các phần tử mở rộng/thu nhỏ của chúng ta có các phần tử con nằm bên ngoài phần tử mẹ bị cắt bớt của chúng 47, vì đây là trường hợp cuối cùng
Chúng ta có thể cung cấp chiều cao cho đường viền trong CSS không?Không, bạn không thể đặt chiều cao đường viền .
Bạn có thể thêm phần đệm vào đường viền không?Các thuộc tính đệm CSS được sử dụng để tạo khoảng trống xung quanh nội dung của phần tử, bên trong bất kỳ đường viền đã xác định nào . Với CSS, bạn có toàn quyền kiểm soát phần đệm. Có các thuộc tính để đặt phần đệm cho mỗi bên của một phần tử (trên, phải, dưới và trái). |