Chèn khung vào html. Vấn đề với khung. Ví dụ: Xóa đường viền giữa các khung

Xin chào các độc giả thân mến của trang blog. Hôm nay chúng ta sẽ nói về các khung trong HTML. Rõ ràng là chúng ta sẽ bắt đầu lại từ đầu, cụ thể là đây là loại động vật nào. Chúng ta cũng sẽ nói về hiện tại (Khung) và tương lai (Iframe) của các thành phần này bằng ngôn ngữ đánh dấu siêu văn bản Phiên bản hiện tại và trong tiêu chuẩn Html 5 mới với .

Ở cuối bài viết, sau miêu tả cụ thể quá trình tạo các khung tích hợp và cấu trúc cổ điển của chúng bằng mã Html (đã hiếm khi được sử dụng), chúng ta sẽ đề cập đến vấn đề về mức độ liên quan của việc xây dựng một trang web trên chúng, đồng thời thảo luận những cách có thểứng dụng của họ trong khoảng thời gian hiện tại bằng cách sử dụng ví dụ trên blog của tôi.

Nó là gì và Iframe khác với Frame như thế nào?

Nó là gì? Hóa ra chúng không chỉ có thể được sử dụng trên các trang web mà còn trong bất kỳ ứng dụng nào cho đến chương trình, nhưng chúng khác nhau ở chỗ cửa sổ của trang web hoặc ứng dụng sẽ được chia thành nhiều khu vực, mỗi khu vực sẽ tải một tài liệu riêng biệt. . Hơn nữa, các vùng khung này hoạt động độc lập với nhau.

Có lẽ ví dụ rõ ràng nhất về việc sử dụng chúng mà hầu hết các bạn đã gặp phải là cái gọi là tệp trợ giúp mà nhiều chương trình được cài đặt trên máy tính của bạn có.

Tệp có menu trợ giúp được tải vào cửa sổ bên trái và tài liệu tương ứng với mục menu đã chọn sẽ được hiển thị trong cửa sổ bên phải. Đáng chú ý là cấu trúc này cho phép bạn không tải lại tệp có menu vào cửa sổ bên trái khi mở tài liệu mới ở cửa sổ bên phải. Đây chính xác là những gì nó bao gồm Ưu điểm chính của việc sử dụng khung trong HTML.

Trên thực tế, tên của các phần tử này nên được hiểu là một cửa sổ độc lập. Với sự trợ giúp của khung, chúng ta có cơ hội chia một cửa sổ lớn thành nhiều mảnh, từ đó có thể đóng vai trò là bộ thu cho các tài liệu riêng biệt độc lập với nhau (trang, văn bản, hình ảnh, video, v.v.).

Cấu trúc khung được tạo ra trong ngôn ngữ đánh dấu siêu văn bản như thế nào? Nếu chúng ta nói về tiêu chuẩn Html 4.01 (theo phân loại), là tiêu chuẩn chính ở thời điểm hiện tại, thì ba phần tử được sử dụng cho việc này - Frame, Frameset và Noframes.

Iframe - khung tích hợp theo tiêu chuẩn Html 5

Nếu chúng ta nói về tiêu chuẩn Html 5 (tương lai của chúng tôi, một số thành phần đã được nhiều trình duyệt hỗ trợ), thì sẽ không còn các thẻ Frame, Frameset và Noframes nữa, cũng như cấu trúc khung cổ điển; một thẻ Iframe duy nhất (khung nhúng) mà chúng ta sẽ nói đến ở phần đầu, sau đó chúng ta sẽ chuyển sự chú ý sang sơ đồ cổ điển từ phiên bản 4.01, hiện đang thực sự được sử dụng.

Iframe, không giống như các nội dung cổ điển được thảo luận bên dưới, không yêu cầu thay thế thẻ Body bằng thẻ Frameset. Những thứ kia. thẻ này có thể được chèn vào các trang thông thường, chẳng hạn như bên trong một đoạn văn hoặc bất kỳ nơi nào khác. Về cốt lõi, thành phần này rất giống với thẻ Img mà chúng ta đã xem xét.

Nó nằm trong dòng với nội dung có thể thay thế được vì nó hoạt động giống hệt như phần tử nội tuyến, nhưng bên trong nó được hiển thị nội dung bên ngoài không liên quan. Chỉ có bốn phần tử như vậy trong ngôn ngữ HTML - Img, Iframe, Object và Embed. Do đó, anh hùng của chúng tôi ngụ ý sự hiện diện của một tệp bên ngoài sẽ được tải vào một khu vực có kích thước được đặt bằng cách sử dụng các thuộc tính của thẻ này.

Cái đó. Iframe là một phần tử chìm trong đó một đối tượng bên ngoài (chẳng hạn như video) được tải vào. Và để chỉ ra đường dẫn đến tệp này sẽ được tải trên trang, hãy sử dụng thuộc tính Src đặc biệt. Nhưng không giống như Img, phần tử Iframe được ghép nối, tức là. cũng có thẻ đóng:

TRONG trong ví dụ này hiển thị đầu ra trên trang video Youtube bằng Iframe. Để giới hạn diện tích của khung (cửa sổ) nơi nó sẽ được tải tập tin bên ngoài, thuộc tính được cung cấp Chiều rộng và chiều cao, có giá trị được chỉ định bằng pixel:

Những thứ kia. thẻ này tạo ra một khu vực mà một số đối tượng bên ngoài được tải vào đó (không quan trọng nó đến từ trang web của bạn hay từ một tài nguyên khác). Chiều rộng và chiều cao của khu vực được chỉ định bằng Chiều rộng và Chiều cao, đồng thời thuộc tính Src chỉ định đường dẫn đến đối tượng này.

Phần tử Iframe kế thừa tất cả các thuộc tính này từ các thẻ nội tuyến tương tự có nội dung được thay thế (chẳng hạn như Img đã được đề cập ở trên). Chà, anh ấy cũng lấy thuộc tính từ những bức ảnh Hspace và Vspace, cho phép bạn đặt thụt lề từ đường viền của khung đến văn bản bao quanh nó.

Điều quan trọng nữa là việc căn chỉnh khung tích hợp được thực hiện theo cách giống hệt như chúng ta có thể thấy khi nghiên cứu hình ảnh trong Html - . Tất cả đều giống nhau Căn chỉnh, nhưng đối với thẻ Iframe có các giá trị có thể là Bottom, Top, Middle, Left và Right.

Nhưng phần tử này cũng lấy một số thuộc tính từ thẻ Frame từ cấu trúc khung cổ điển mà chúng ta sẽ nói rất chi tiết bên dưới trong văn bản. Các thuộc tính này bao gồm Tên, giá trị của nó có thể được sử dụng làm giá trị để tài liệu bạn cần khi nhấp vào liên kết sẽ mở ra trong cửa sổ của khung này (đọc thêm bên dưới).

Cũng trong Iframe, thuộc tính Frameborder được di chuyển từ thẻ Frame, chỉ có hai giá trị - 0 (khung xung quanh khung không được hiển thị) hoặc 1 (khung hiển thị). Giá trị mặc định là Frameborder=1, vì vậy để xóa nó bạn cần nhập Frameborder="0":

Thuộc tính Scrolling cũng đã được chuyển từ Frame sang phần tử này, có giá trị mặc định là Auto - các thanh cuộn trong khung sẽ xuất hiện khi cần khi nội dung lớn hơn kích thước của cửa sổ dự định hiển thị nó.

Chà, thuộc tính Marginwidth và Marginheight cũng được chuyển từ phần tử Frame. Chúng sẽ được thảo luận chi tiết bên dưới trong văn bản, nhưng tóm lại - chúng cho phép bạn đặt vết lõm theo chiều rộng và chiều cao từ các cạnh của khung đến nội dung được đặt trong đó.

Như tôi đã đề cập, một ví dụ rõ ràng Việc sử dụng iframe là:

Bằng cách chèn Iframe trực tiếp vào trang web, bạn sẽ nhận được đầu ra của video từ YouTube. Chúng tôi kết luận rằng phần tử này là sự kết hợp giữa các phần tử nội tuyến với nội dung được thay thế và trên thực tế là các khung cổ điển mà bây giờ chúng ta sẽ thảo luận.

Các khung dựa trên thẻ Frame và Frameset - cấu trúc của chúng

Vì vậy, việc tạo cấu trúc khung cổ điển bắt đầu bằng những gì bạn viết trong mã Html thay vì thẻ Nội dung mở và đóng, thường phải có trong bất kỳ tài liệu nào, thay thế nó bằng một vùng chứa dựa trên phần tử Bộ khung.

Điểm cơ bản là phần tử Body không thể được sử dụng trong trường hợp này - Body (đối với tài liệu thông thường) hoặc Frameset (khi tạo cấu trúc khung tài liệu):

Mỗi khung mà chúng ta tạo bên trong khung chính được tạo bằng cách sử dụng một phần tử riêng biệt Khung. Thẻ này là thẻ duy nhất và trong đó chúng tôi đặt đường dẫn đến tài liệu sẽ được tải vào cửa sổ này.

Yếu tố thứ ba mà chúng ta chưa đề cập đến là Noframe. Nó được ghép nối và cho phép bạn viết một số văn bản bên trong, văn bản này sẽ được trình duyệt xử lý và hiển thị trên trang web chỉ khi trình duyệt này (hoặc thiết bị hiển thị khác) không hỗ trợ khung. Điều này có thể xảy ra, chẳng hạn như nếu bạn đang sử dụng trình duyệt dành cho thiết bị di động.

Thông thường, trong Noframes, họ không chỉ thêm thông tin về tình hình hiện tại không thể xử lý cấu trúc khung mà còn thêm khả năng truy cập các trang khác nơi bạn có thể tiếp tục làm việc mà không cần sử dụng chúng. Thật khó để nói bất cứ điều gì khác về anh ấy, vì vậy hãy tiếp tục.

Hóa ra phần tử Frameset, được sử dụng thay cho thẻ Body, chiếm toàn bộ không gian được phân bổ cho khu vực xem và các khung sẽ được tạo bên trong khu vực này bằng cách sử dụng các phần tử Frame riêng lẻ. Về vấn đề này, câu hỏi được đặt ra - làm thế nào để phân chia khu vực xem giữa các cửa sổ riêng biệt hay nói cách khác là làm thế nào để đặt kích thước của từng cửa sổ.

Điều này được thực hiện bằng cách thêm các thuộc tính thích hợp vào phần tử Frameset. Có hai người trong số họ - Cols và hàng. Cols thiết lập việc phân chia một cửa sổ lớn thành các khung hoặc cột dọc và Rows cho phép bạn chia nó thành các cửa sổ hoặc hàng ngang.

Tạo cấu trúc dựa trên Frameset và các thuộc tính Cols và Rows của nó

Giá trị cho Cols và Rows của thẻ Html Frameset là các số được phân tách bằng dấu phẩy (không có dấu cách). Những con số này đặt ra tỷ lệ của các cửa sổ mà chúng ta muốn có được. Vì vậy, dù viết Cols hay Rows bao nhiêu cách nhau bằng dấu phẩy thì số khung mà chúng ta có sẽ là kết quả.

Ví dụ: sử dụng ký hiệu này, chúng ta sẽ có ba cột dọc có chiều rộng tương ứng với tỷ lệ 2:5:3.

Vì chúng ta đã đặt tỷ lệ cho ba khung, nên chúng ta sẽ phải bao gồm ba thành phần Khung giữa thẻ Frameset mở và đóng, ngay cả khi không chỉ định các thuộc tính bổ sung:

Kết quả là, cấu trúc khung của chúng tôi, bao gồm ba cửa sổ trống, sẽ trông như thế này:

Trong ví dụ này, chúng tôi đặt kích thước cửa sổ (Khung) bằng cách sử dụng tỷ lệ phần trăm, được lấy từ chiều rộng của vùng xem (đây là trường hợp khi sử dụng Cols) hoặc từ chiều cao của nó (Hàng). Khi thay đổi khu vực xem phần trăm giữa các kích thước khung hình sẽ được giữ nguyên. Nhưng thay vì tỷ lệ phần trăm, bạn cũng có thể sử dụng những con số đơn giản có ý nghĩa. Ở đây, tôi nghĩ, cũng không có khó khăn gì trong việc hiểu biết.

Nhưng cũng có một tùy chọn khá khác thường về kích thước, trông giống như dấu hoa thị "*". Hơn nữa, nó có thể chỉ là “*” hoặc dấu hoa thị có số ở phía trước, ví dụ: “3*”. Một điều thông minh rất giống với tỷ lệ phần trăm và có nghĩa là chúng ta chia không gian cho Frame theo tỷ lệ.

Hãy xem một ví dụ. Bây giờ hãy chọn chia khung nhìn thành các hàng ngang bằng Hàng:

Mục này có ý nghĩa gì? Toàn bộ khu vực xem có sẵn cho chúng ta theo chiều dọc sẽ được chia thành ba dòng. Chiều cao của dòng đầu tiên sẽ được lấy ở mức 200 pixel, dòng thứ hai - ở mức 500, nhưng dòng thứ ba sẽ chiếm toàn bộ không gian còn lại về chiều cao, bởi vì “*” đã được sử dụng làm kích thước của nó.

Điều đáng chú ý là các giá trị “*” và “1*” có nghĩa giống nhau - chúng tôi chia tất cả không gian còn lại thành một và cung cấp một phần này cho khung này (nghĩa là tất cả không gian còn lại).

Nhưng hãy xem điều gì sẽ xảy ra nếu bạn sử dụng giá trị “*” với một số để chia theo tỷ lệ:

Bạn nghĩ kích thước của Khung trong trường hợp này sẽ như thế nào? Rõ ràng dòng thứ hai chắc chắn sẽ có chiều cao 100 pixel. Nhưng không gian còn lại sẽ được phân chia theo chiều cao như thế nào giữa hàng thứ ba và hàng đầu tiên?

Việc tính toán khá dễ dàng - chỉ cần cộng bốn (4*) với hai (2*) và chia cho mẫu số này (hãy nhớ các phân số trong chương trình giảng dạy ở trường) hai và bốn. Những thứ kia. chúng ta nhận được rằng cột đầu tiên có khung sẽ chiếm một phần ba không gian còn lại về chiều cao và cột thứ ba sẽ chiếm hai phần ba. Hay nói cách khác, cái thứ ba sẽ cao gấp đôi cái thứ nhất:

Bạn có thể sử dụng cả ba cách để định kích thước cửa sổ khung trong một thuộc tính, ví dụ:

Kết quả là, chúng ta sẽ có được cột Khung đầu tiên có chiều rộng bằng 10% toàn bộ khu vực có sẵn, cột thứ hai - 100 pixel và ba cột còn lại sẽ có chiều rộng theo tỷ lệ bốn, ba và hai phần chín của không gian chiều rộng còn lại. Vì vậy, mọi thứ đều đơn giản và rõ ràng.

Nếu bạn muốn chia cửa sổ chính không chỉ thành các khung ngang và dọc mà còn thành các kết hợp của chúng, thì bạn có thể sử dụng cấu trúc lồng nhau của các phần tử Frameset riêng biệt cho các cột và riêng cho các hàng. Ví dụ: để có được cấu trúc hiển thị trong ảnh chụp màn hình bên dưới, chỉ cần sử dụng cấu trúc sau:

Những thứ kia. trước tiên, chúng tôi sử dụng “frameset cols=”20%,80%”“ để chia tất cả không gian có sẵn thành hai cột theo chiều dọc và đặt nội dung của cột bên phải bằng thẻ “frame”, nhưng thay vì thêm phần tử “frame” đối với cột bên trái, chúng tôi mở một “bộ khung hàng =“10%,*”” mới.

Và với sự trợ giúp của nó, chúng tôi chia cột bên phải thành hai dòng có khung, nội dung của chúng được đặt bằng cách sử dụng hai thẻ “frame”, sau đó chúng tôi đóng cả hai vùng chứa “frameset”. Mọi thứ đều đơn giản và hợp lý.

Chỉ định đường dẫn trong thuộc tính Src của phần tử Frame

Nhưng tất cả chúng ta đều nói về phần tử Frameset cũng như các thuộc tính Cols và Rows của nó, với sự trợ giúp của chúng, chúng ta hình thành cấu trúc và đặt kích thước của chúng. Bây giờ hãy tìm cách hiển thị các tài liệu cần thiết trong các khung được yêu cầu và cách định cấu hình tương tác giữa các cửa sổ của chúng.

Vậy chúng ta quản lý ngoại hình như thế nào? cửa sổ đã tạo? Tất cả điều này được chứa trong các thuộc tính của thẻ Frame. Điều đáng nói đầu tiên là Src. Chúng ta đã thấy nó trong thẻ Img khi xem xét việc chèn hình ảnh vào mã Html. Bản chất của nó không thay đổi và nó vẫn cho phép bạn chỉ định đường dẫn đến tài liệu sẽ được tải vào khung.

Đường dẫn đến tài liệu trong Src có thể được chỉ định là . Đường dẫn tương đối thường được sử dụng cho tài liệu nằm trên tài nguyên của riêng bạn, nhưng bạn sẽ cần những tài liệu tuyệt đối khi bạn muốn tải tài liệu từ một trang khác vào cửa sổ khung.

Nếu thuộc tính Src không được chỉ định cho biết đường dẫn đến tài liệu cần thiết, sau đó cửa sổ sẽ được tải tài liệu trống. Cá nhân tôi đã từng làm điều tương tự cho blog của mình (như yếu tố bổ sung Navigation) và đồng thời được tạo trên máy chủ lưu trữ thư mục riêngđối với nó, tôi đặt ở đó không chỉ một tệp Html có cấu trúc khung (mà tôi gọi là index.html), mà còn tất cả các tài liệu được tải vào các cửa sổ khác nhau, cũng như các tệp hình ảnh được sử dụng làm nền.

Vì vậy, cách dễ dàng nhất đối với tôi là sử dụng các liên kết tương đối trong thuộc tính Src của thẻ Frame:

Điều đáng chú ý là nếu bạn thay thế tất cả các liên kết được đưa ra trong mã này từ tương đối thành tuyệt đối (chẳng hạn như https://site/navigator/joomla.html) và mở tệp này trong trình duyệt thì các tài liệu được chỉ định trong Frame sẽ được tải từ máy chủ của tôi và bạn sẽ thấy hình ảnh tương tự trong trình duyệt của mình. Hơn nữa, việc tệp của bạn có cấu trúc khung (index.html) sẽ được đặt ở đâu không quan trọng - trên máy tính của bạn hoặc trên máy chủ lưu trữ.

Trong ví dụ trong hình, một trang có menu nhất định, là menu thông thường, được tải vào cửa sổ của khung bên trái. Nhưng điều quan trọng không phải là menu được hình thành như thế nào mà là điều gì sẽ xảy ra sau khi nhấp vào bất kỳ liên kết nào của nó.

Nếu bạn làm điều này, thì mọi thứ sẽ diễn ra chính xác như bình thường - tài liệu sẽ mở ở cửa sổ phía dưới bên phải. Nhưng để làm được điều này tôi đã phải sử dụng một một mẹo nhỏ, bởi vì trong phiên bản mặc định, tài liệu đã mở toàn bộ kích thước của cửa sổ, thay thế cấu trúc khung mà tôi hoàn toàn không cần vì nó đã biến mất Chức năng điều hướngở khung bên trái và trên cùng.

Cách mở tài liệu qua link trong khung

Vì vậy, khi nói về siêu liên kết, chúng tôi đã đề cập đến thuộc tính thẻ “A” là Target=_blank. Bạn có nhớ nó dùng để làm gì không? Việc mở tài liệu được liên kết trong một cửa sổ mới là đúng. Theo mặc định, nó sẽ mở trong cùng một cửa sổ, tương đương với target="_self".

Nhưng đây là những cơ hội Mục tiêu không bị giới hạn. Hóa ra bạn có thể thêm một giá trị cho nó như một tên khung, được chỉ định trước trong thuộc tính Tên đặc biệt của thẻ Khung. Khi đó, tài liệu qua liên kết này sẽ không mở trong cùng một cửa sổ, chiếm toàn bộ không gian của nó mà trong Khung bạn đã chỉ định. Rõ ràng? Nếu không hoàn toàn thì bây giờ mọi chuyện sẽ trở nên rõ ràng khi chúng ta phân tích ví dụ.

Vì vậy, hãy quay lại ví dụ của chúng tôi được hiển thị trong hình trên. Chúng ta cần mở các trang bằng liên kết từ cửa sổ bên trái ở khung phía dưới bên phải (lớn). Do đó, trước tiên bạn cần đặt tên cho cửa sổ lớn này bằng thuộc tính Name trong thẻ Frame.

Họ đã làm ra nó và gọi nó là “ktona”. Bây giờ bạn có thể mở tệp được tải dưới dạng menu trong cửa sổ bên trái một cách an toàn và thêm thuộc tính Target="ktona" vào tất cả các thẻ A trong đó:

Lịch sử của Joomla và thành phần VirtueMart

Tất nhiên, với sự trợ giúp của công cụ tìm kiếm và thay thế, sẽ không khó để đặt nó cho tất cả các siêu liên kết, nhưng tại sao lại tải mã một cách không cần thiết khi chúng ta có cơ hội tuyệt vời để sử dụng thẻ cơ sở đặc biệt, mà chúng tôi đã đề cập trong cùng một bài viết về siêu liên kết, khi chúng tôi nói về việc sử dụng mục tiêu trống.

Chỉ cần đặt giữa mở và đóng là đủ được gắn thẻ cái đầu phần tử cơ sở target="ktona" và tất cả các liên kết trong mã HTML của tài liệu này sẽ mở các trang mới trong khung được chỉ định có tên là "ktona":

Nhân tiện, nếu chúng ta lấy công cụ hiện có của tôi làm ví dụ, thì chúng ta vẫn cần đảm bảo rằng tất cả các liên kết từ cửa sổ ngang trên cùng đều mở các trang của chúng trong khung dọc bên trái, đóng vai trò là menu bên trái của tôi. Cần phải làm gì cho việc này?

Chà, trước tiên, bạn cần đặt tên cho khung dọc bên trái:

Và trong tệp được tải vào cửa sổ trên cùng (gor.html), bạn cần thêm phần tử target="gor" cơ sở:

Thế là xong, bây giờ chúng ta đã làm đúng mọi thứ. Tất cả các tài liệu theo các liên kết từ khung trên cùng sẽ mở trong cửa sổ bên trái và tất cả các liên kết từ đó sẽ mở các tài liệu ở Khung trung tâm và lớn nhất. Theo tôi, mọi thứ đều đơn giản và hợp lý.

Thuộc tính thẻ khung để tùy chỉnh giao diện của cửa sổ

Bây giờ chúng ta hãy xem những thuộc tính nào ngoài Src và Name có thể được sử dụng trong thẻ Frame để tùy chỉnh giao diện của khung. Hãy bắt đầu với Cuộn. Sử dụng nó, chúng ta có thể định cấu hình hiển thị thanh cuộn cho từng cửa sổ trong cấu trúc khung của bạn một cách riêng biệt.

Tính năng cuộn có giá trị mặc định là Auto - trình duyệt sẽ tự động quyết định, dựa trên kích thước của tài liệu được tải vào khung, có hiển thị thanh cuộn hay không. Nếu tài liệu không hoàn toàn vừa với cửa sổ, một thanh cuộn sẽ xuất hiện, cho phép bạn xem toàn bộ đến cuối.

Bạn cũng có thể sử dụng các giá trị Có (thanh cuộn trong cửa sổ sẽ luôn được hiển thị, ngay cả khi tài liệu hoàn toàn vừa với nó) và Không (thanh cuộn sẽ không bao giờ xuất hiện, ngay cả khi một phần của tài liệu không vừa) làm giá trị cho Scrolling.

Trong công cụ đã có một thời của mình, tôi đã sử dụng giá trị mặc định Tự động và các thanh cuộn trong khung xuất hiện khi cần:

Thuộc tính sau của thẻ Frame là Noresize- là đơn (nó không có giá trị). Bằng cách đăng ký nó, do đó bạn sẽ cấm thay đổi kích thước của nó, điều này được thực hiện theo mặc định kéo và thả đơn giản viền khung bằng chuột.

Khi di chuyển con trỏ chuột đến đường viền bạn sẽ thấy con trỏ biến thành mũi tên hai đầu và lúc này bạn hãy nhấn vào nút trái chuột, bạn có thể di chuyển đường viền theo ý muốn. Noresize áp đặt lệnh cấm đối với hành vi cố ý này (khi bạn di chuyển con trỏ chuột đến viền cửa sổ, bạn sẽ không còn thấy mũi tên hai chiều nữa).

Một thuộc tính trực quan khác là khung viền. Sử dụng nó, bạn có thể chỉ định có vẽ khung (đường viền) giữa các khung hay không vẽ. Frameborder chỉ có thể có hai giá trị có thể - 0 (không vẽ khung) hoặc 1 (hiển thị đường viền). Tất nhiên, giá trị mặc định là 1.

Có một sự tinh tế. Nếu bạn muốn xóa đường viền hiển thị, thì bạn sẽ phải thêm Frameborder=0 vào tất cả các thẻ Frame của các khung mà bạn muốn xóa đường viền hiển thị ở giữa.

Chà, chúng ta vẫn phải xem xét một số thuộc tính của thẻ Frame - Độ rộng lề và chiều cao lề, đặt phần đệm theo chiều rộng (phải và trái) và chiều cao (trên và dưới) từ viền của cửa sổ đến nội dung được tải vào đó (số có nghĩa là số pixel của phần đệm):

Tại sao bạn không thể tạo một trang web trên khung?

Chúng ta hãy xem nhược điểm cơ bản của các cấu trúc cổ điển là gì, về cơ bản khiến chúng không được sử dụng khi tạo một trang web. Nó bao gồm thực tế là theo cấu trúc khung này không thể theo dõi tình trạng của cô ấy.

Các cấu trúc phức tạp có thể có hàng nghìn trạng thái khác nhau (các biến thể của tài liệu được mở trong các cửa sổ khung khác nhau), nhưng địa chỉ Url của chính cấu trúc này không thay đổi. Vì điều này sẽ có Không thể sử dụng dấu trang của trình duyệt hoặc gửi liên kết đến các trang yêu thích của bạn cho người dùng khác. Tại sao?

Bởi vì địa chỉ không thay đổi và khi bạn mở nó từ dấu trang trình duyệt hoặc từ email, bạn sẽ nhận được một trang có trạng thái bắt đầu của cấu trúc khung chứ không phải trạng thái mà bạn muốn lưu.

Tất nhiên, mặc dù vấn đề này có thể được giải quyết nhưng nó không còn sử dụng HTML, nhưng với sự trợ giúp của máy chủ (ví dụ: Php) hoặc ngôn ngữ lập trình máy khách (JavaScript) và các giải pháp này sẽ không hiệu quả một trăm phần trăm. Trên thực tế, các giải pháp như vậy cho phép bạn thêm dữ liệu bổ sung về trạng thái hiện tại của nó vào địa chỉ Url của cấu trúc khung, nhưng điều này không dễ thực hiện và độ tin cậy sẽ không tuyệt đối.

Đây là nhược điểm đầu tiên của việc sử dụng khung để tạo trang web và là nhược điểm rất quan trọng, nhưng còn có một nhược điểm rất lớn khác. Tất nhiên, các công cụ tìm kiếm từ lâu đã học cách lập chỉ mục và trích xuất từ ​​chúng địa chỉ của những tài liệu được tải vào cửa sổ của chúng. Vấn đề là khác nhau.

Khi người dùng điều hướng từ kết quả tìm kiếm Yandex hoặc Google vào trang web của bạn được xây dựng trên cơ sở cấu trúc khung, sau đó chỉ tài liệu được tải vào một trong các khung sẽ mở chứ không phải toàn bộ cấu trúc. Bạn có hiểu tôi đang nói về điều gì không?

Người dùng sẽ nhìn thấy tài liệu và sẽ không thấy điều hướng trên trang web của bạn, vì nó sẽ được bảo vệ trong các cửa sổ khác và chúng chỉ được tải như một phần của toàn bộ cấu trúc.

Kết quả là, một trang web được xây dựng trên khung sẽ trở nên không thể sử dụng được. Mặc dù, một lần nữa, có các giải pháp cho vấn đề này dựa trên tập lệnh máy chủ, khi việc chuyển hướng sẽ được thực hiện từ địa chỉ của từng tài liệu đến cấu trúc khung nằm trong trong điều kiện phù hợp, nhưng một lần nữa điều này rất khó và không phải lúc nào cũng đáng tin cậy.

Nói chung, kết luận có thể được rút ra một cách rõ ràng - Không cần tạo trang web trên khung. Nhưng chúng thường xuyên được sử dụng để tạo ra sự trợ giúp cho Các ứng dụng khác nhau, và một số điều nhỏ khác có thể có ích.

Ví dụ: tôi đã tạo một cấu trúc khung mà tôi gọi là “Bộ điều hướng” (hiện tại nó đã tạm thời bị xóa) và cấu trúc này đã trở thành một loại menu bên ngoài mở rộng cho blog của tôi, mà theo tôi, có vẻ như sẽ đơn giản hóa việc làm việc với tài nguyên và do đó, việc cải thiện câu “không vô nghĩa” có ảnh hưởng rất rất mạnh mẽ đến việc quảng bá trang web.

Tuy nhiên, để tránh những rắc rối xảy ra với công cụ tìm kiếm, Tôi đã đóng toàn bộ cấu trúc khung này và cũng đã thêm vào tất cả cấu trúc đó để đề phòng Tệp HTML Thẻ meta Rodots có lệnh cấm lập chỉ mục:

JOOMLA

Nhưng tất cả những hạn chế này chỉ áp dụng cho các cấu trúc trên thẻ Frame và Frameset, và khung được nhúng trên thẻ Iframe không có bất kỳ sai sót rõ ràng nào và chúng có thể và thậm chí nên được sử dụng trong các dự án của bạn, ít nhất là để chèn video từ YouTube.

Chúc bạn may mắn! Hẹn gặp lại bạn sớm trên các trang của trang blog

Bạn có thể xem thêm video bằng cách vào
");">

Bạn có thể quan tâm

Chỉ thị nhận xét và Doctype trong mã Html, cũng như khái niệm về các phần tử khối và nội tuyến (thẻ)
Nhúng và đối tượng - Thẻ Html để hiển thị nội dung đa phương tiện (video, flash, âm thanh) trên các trang web
Img - Thẻ Html để chèn ảnh (Src), căn chỉnh và ngắt dòng văn bản xung quanh ảnh (align), cũng như đặt nền (background)

Nhiều trang web hiện đại có menu điều hướng "dính" xuất hiện ở thanh bên hoặc ở trên cùng khi bạn cuộn lên và xuống trang. Nhưng Thuộc tính CSS, cho phép bạn tạo các menu "dính", không phải lúc nào cũng được trình duyệt hỗ trợ. Trước đây, các khung HTML được sử dụng để triển khai chức năng tương tự.

Sự khác biệt giữa Khung và Iframe

Khi bạn sử dụng bộ khung, bạn chia phần hiển thị của cửa sổ trình duyệt thành nhiều khung. Mỗi khung có nội dung riêng, không ảnh hưởng đến nội dung của khung tiếp theo. Khung và Iframe làm chức năng tương tự— nhúng một tài nguyên vào một trang web, nhưng về cơ bản chúng khác nhau:

  • Khung là các phần tử xác định bố cục;
  • Iframe là các phần tử thêm nội dung.

Lịch sử và tương lai của khung hình

Khung không dùng nữa của W3C trong HTML5. Quyết định này người ta đã lập luận rằng khung HTML tác động tiêu cực đến khả năng sử dụng và khả năng tiếp cận. Hãy xem liệu những tuyên bố này có hợp lý hay không.

Sự cố với khung

  • Vấn đề về khả năng sử dụng: Với sự phổ biến ngày càng tăng của các thiết bị di động có màn hình nhỏ, các trang web cần cung cấp cho người dùng nhiều chế độ xem thay đổi tùy thuộc vào kích thước của chế độ xem. Mặc dù các khung có thể được thao tác để cung cấp một mức độ nhất định khả năng thích ứng, nhưng chúng không phù hợp lắm để tạo các trang web phản hồi nhanh;
  • Khả dụng: trình đọc màn hình và các công nghệ hỗ trợ khác khá khó đọc và tương tác với các trang web sử dụng khung.

TRONG khoảnh khắc này Trong phát triển web, có một xu hướng toàn cầu là tách nội dung của trang web khỏi phần trình bày của nó:

  • Nội dung phải được thêm và xác định bằng cách đánh dấu, ví dụ như qua HTML;
  • Bản trình bày được xác định bằng các ngôn ngữ như CSS và JavaScript.

Việc sử dụng khung ban đầu liên quan đến việc tạo ra một diện mạo và cấu trúc cụ thể, trong khi các tác vụ trình bày phải được xử lý bằng sử dụng CSS.

Tương lai của khung hình

Mặc dù ngày nay tất cả các trình duyệt hiện đại đều hỗ trợ khung, W3C đã tuyên bố rõ ràng khung hình đó " nhà phát triển web không nên sử dụng". Nếu bạn có một trang web sử dụng khung, bạn nên cân nhắc chuyển sang các công nghệ khác. Tại một thời điểm nào đó, các trình duyệt sẽ không còn hỗ trợ khung và khi điều đó xảy ra, các trang web sử dụng chúng sẽ không thể sử dụng được nữa.

Cách tạo khung trong HTML

Không nên sử dụng khung khi phát triển trang web mới nhưng đối với quản trị viên web đang duy trì các tài nguyên cũ, biết cách sử dụng chúng có thể hữu ích.

Khái niệm cơ bản về khung

Khái niệm cơ bản về khung khá đơn giản:

  • Sử dụng phần tử bộ khung tại một vị trí cụ thể trong phần tử nội dung trong một tài liệu HTML;
  • Sử dụng phần tử khung để đóng khung nội dung trang web;
  • Sử dụng thuộc tính src để xác định tài nguyên cần được tải bên trong khung;
  • Tạo HTML cho từng khung hình tập tin riêng biệt với nội dung.

Hãy xem xét một vài ví dụ về cách thức hoạt động của nó. Đầu tiên chúng ta cần tạo một số tài liệu HTML để làm việc. Hãy tạo bốn tài liệu HTML khác nhau. Đây là những gì cái đầu tiên sẽ chứa:

Khung 1

Nội dung của Khung 1

Chúng tôi sẽ lưu tài liệu đầu tiên dưới dạng frame_1.html. Ba văn bản còn lại sẽ có nội dung tương tự và được đặt tên tương ứng.

Tạo cột dọc

Để tạo một bộ bốn Cột dọc, bạn cần sử dụng phần tử frameset có thuộc tính cols. Thuộc tính cols được sử dụng để xác định số lượng và kích thước cột mà bộ khung sẽ chứa. Trong trường hợp của chúng tôi, chúng tôi có bốn tệp để hiển thị. Vì vậy, chúng ta cần bốn khung.

Để tạo chúng, chúng ta cần đặt thuộc tính cols thành bốn giá trị, cách nhau bằng dấu phẩy. Để đơn giản, chúng tôi sẽ gán cho mỗi khung giá trị * , điều này sẽ đặt chúng ở kích thước sẽ tự động lấp đầy tất cả không gian có sẵn. Đây là giao diện đánh dấu HTML của chúng tôi:

Và đây là cách đánh dấu này sẽ được hiển thị:

Tạo hàng ngang

Các hàng khung HTML có thể được tạo bằng thuộc tính row thay vì thuộc tính cols như trong ví dụ trước:

Bằng cách thực hiện thay đổi này, chúng tôi đã thực hiện để các khung hình hiện được tải thành bốn hàng, xếp chồng lên nhau:


Hợp nhất các cột và hàng

Các cột và hàng của khung có thể được hiển thị đồng thời trên cùng một trang. Bạn có thể lồng một khung vào trong một khung khác. Để làm điều này, trước tiên chúng ta tạo một bộ khung rồi lồng bộ khung con vào bên trong phần tử cha. Dưới đây là ví dụ về cách bạn có thể lồng hai hàng trong một tập hợp ba cột:

bộ khung cols="*,*,*">

Ví dụ về khung HTML:


Bộ khung lồng nhau được đặt bên trong phần tử cha, khung đầu tiên. Phần tử lồng nhau có thể được đặt ở bất cứ đâu. Ví dụ: nếu muốn phần tử lồng nhau được đặt ở giữa thì chúng ta chỉ cần sắp xếp lại các phần tử như sau:

Đây là cách các khung sẽ xuất hiện:


Bạn có thể tạo các khung lồng nhau khác:

Mã này tạo ra một tập hợp gồm hai cột có kích thước bằng nhau. Sau đó chúng tôi chia cột thứ hai thành hai hàng. Và cuối cùng, chúng ta chia hàng thứ hai thành hai cột. Đây là những gì nó sẽ trông như thế nào:


Một cách khác để tạo sự kết hợp giữa các hàng và cột là xác định một lưới các cột và hàng trong một khung duy nhất. Ví dụ: nếu bạn muốn tạo một lưới gồm bốn khung cùng cỡ, bạn có thể sử dụng đoạn mã sau:

Lưới hàng và cột kết quả sẽ trông như thế này:


Cách tạo kiểu cho khung

Khi Chúng ta đang nói về Về việc xác định kiểu cho trang web sử dụng khung trong HTML, có hai cách để gán kiểu:

  • Xác định phong cách trong mỗi khung hình;
  • Xác định phong cách cho frameset.

Sự thể hiện của từng khung phải được xác định trong tài liệu nguồn. Chế độ xem bộ khung phải được xác định trong tài liệu gốc chứa bộ khung. Nói cách khác, kiểu cho frame_1.html phải được đặt theo quy tắc CSS có trong tệp frame_1.html hoặc trong biểu định kiểu được liên kết với tệp frame_1.html.

Xác định kiểu khung trong tài liệu nguồn

Giống như bất kỳ trang web nào, nội dung của từng khung có thể được tạo kiểu bằng CSS. Để tạo kiểu cho nội dung của từng khung, nó phải được thêm vào tài liệu chính bằng cách liên kết với tệp kiểu bên ngoài hoặc bằng cách thêm kiểu bên trong hoặc nội tuyến. Xem xét rằng chúng tôi có bốn tài liệu nguồn, Kiểu CSS phải được áp dụng riêng cho từng tài liệu.

Bằng cách áp dụng kiểu CSS cho trang web có chứa bộ khung, chúng tôi sẽ không thể áp dụng kiểu cho từng khung riêng lẻ. Nếu chúng ta muốn tạo kiểu frame_1.html, chúng ta cần thêm các kiểu đó trực tiếp vào chính tài liệu. Đây là một ví dụ về cách thực hiện việc này:

Khung 1

Nội dung của Khung 1

Nếu chúng ta quay lại ví dụ trước về tạo khung trong HTML với bốn cột có kích thước bằng nhau và tải bộ khung sau khi thực hiện những thay đổi này đối với tệp frame_1.html, chúng ta sẽ nhận được điều này:


Xác định kiểu và định dạng bộ khung

Cách tác động đến việc trình bày bộ khung ngoài việc xác định kiểu dáng của tài liệu:

  • Kích thước của mỗi khung có thể được xác định hoặc cố định;
  • Khoảng cách giữa các khung có thể được thay đổi;
  • Định dạng của đường viền xung quanh mỗi khung có thể được chỉ định.

Những thay đổi này không được thực hiện thông qua CSS. Chúng được thực hiện bằng cách thêm các thuộc tính và giá trị của chúng vào phần tử khung.

Kích thước khung

Kích thước khung có thể được chỉ định bằng pixel, tỷ lệ phần trăm hoặc khung có thể tự động chiếm tất cả không gian có sẵn. Để chỉ định kích thước khung, hãy chèn giá trị mong muốn vào thuộc tính cols hoặc row. Theo mặc định, nếu khung không được chỉ định thuộc tính noresize, khách truy cập trang web có thể sử dụng chuột để kéo đường viền giữa hai khung, thay đổi kích thước chúng. Nếu điều này không được mong muốn thì phần tử khung có thể được áp dụng thuộc tính noresize và sẽ không thể thay đổi kích thước. Hãy kết hợp cả hai khái niệm này trong thực tế.

Chúng ta sẽ tạo bố cục sau:

  • Một hàng có chiều rộng đầy đủ dọc theo đầu trang;
  • Ba cột bên dưới hàng trên cùng;
  • Cột thứ nhất và thứ ba được điều chỉnh kích thước để tạo thanh bên trái và phải;
  • Cột giữa có kích thước đại diện cho vùng nội dung lớn hơn.

Chúng ta có thể tạo khung HTML bằng mã sau:

Mã này tạo một bộ khung gồm hai hàng:

  • Hàng đầu tiên cao 150 pixel. Thuộc tính noresize được chỉ định cho khung đầu tiên có nghĩa là kích thước của nó không thể thay đổi;
  • Các kiểu chúng ta đã áp dụng trước đó cho frame_1.html vẫn được giữ lại nhưng chúng chỉ ảnh hưởng đến nội dung của khung đó;
  • Hàng thứ hai mở rộng để lấp đầy khoảng trống còn lại;
  • Bộ khung thứ hai được lồng ở hàng thứ hai và chứa ba cột;
  • Cột đầu tiên và thứ ba được điền 20% không gian có sẵn cửa sổ trình duyệt;
  • Cột thứ hai mở rộng để lấp đầy khoảng trống còn lại giữa cột thứ nhất và cột thứ ba;
  • Vì chúng tôi không chỉ định thuộc tính noresize cho các cột nên ban đầu chúng sẽ được hiển thị dựa trên kích thước được chỉ định trong mã.

Tuy nhiên, khách truy cập trang web sẽ có thể thay đổi kích thước chúng theo cách thủ công.

Mã này tạo một trang web được hiển thị như thế này:


Định dạng đường viền và phần đệm xung quanh khung

Bây giờ chúng ta đã xác định được bố cục, nếu cần, chúng ta có thể tăng hoặc giảm khoảng đệm giữa các khung cũng như xóa đường viền giữa chúng. Sử dụng bố cục chúng tôi đã tạo trong đoạn trước, hãy bỏ đường viền giữa ba cột nhưng để lại đường viền giữa hàng trên và dưới. Chúng ta cũng hãy thêm một số phần đệm xung quanh nội dung của khung HTML đầu tiên:

Thuộc tính chiều cao lề được áp dụng cho khung đầu tiên sẽ thêm 15 pixel lề ở trên và dưới nội dung được tải trong khung đầu tiên. Giá trị viền khung bằng 0 sẽ loại bỏ đường viền cho cả ba khung dưới cùng. Nó sẽ trông như thế này:


Chỉ định khung bằng liên kết

Một trong những cách sử dụng khung phổ biến nhất là tạo menu điều hướng "dính" trong một khung luôn hiển thị bất kể vị trí nội dung của các khung khác. Tại sử dụng đúng, các liên kết trong menu điều hướng sẽ khiến các tài nguyên mới được tải vào khung, trong khi các khung còn lại vẫn ở trạng thái tĩnh.

Bạn có thể định dạng các neo để chỉ ra các khung cụ thể bằng cách đặt cho thành phần khung mong muốn một thuộc tính tên và sử dụng thuộc tính mục tiêu bên trong phần tử a để tải href trong khung đã chỉ định. Nếu điều này hơi khó hiểu, hãy hướng dẫn bạn từng bước quy trình tạo khung trong HTML.

Trước hết, chúng ta cần gán tên cho khung mà các liên kết sẽ mở. Trong bố cục mà chúng tôi đã tạo trước đó, chúng tôi có thể sử dụng cột bên trái cho menu điều hướng và cột giữa làm khung mục tiêu. Để làm được điều này bạn cần gán thuộc tính tên phần tử mục tiêu:

Bây giờ chúng ta đã đặt name="mid_col" cho cột trung tâm, chúng ta có thể tạo một số liên kết trong tài liệu nguồn của cột bên trái frame_2.html:

Khung 2

Nội dung của Khung 2

  • Tải frame_1.html
  • Tải frame_2.html
  • Tải frame_3.html
  • Tải frame_4.html

Bây giờ, khi chúng ta tải trang web, thanh bên trái sẽ chứa bốn liên kết điều hướng. Khi nhấp vào liên kết, nội dung của tệp sẽ được tải ở khung cột giữa với thuộc tính name="mid_col" . Đây là những gì chúng ta sẽ thấy khi tải trang:




Nhấp vào liên kết Load frame_3.html và Load frame_4.html ở cột trung tâm sẽ tải nội dung của các tệp này. Nếu chúng ta quên thêm thuộc tính target="mid_col" cho một trong các liên kết thì khi bạn nhấp vào nó, tệp sẽ được tải vào khung chứa liên kết. Ví dụ: nếu chúng ta muốn tải lại toàn bộ trang, khi theo một liên kết đến một trang bên ngoài, chúng ta cần thêm thuộc tính target="_blank" hoặc target="_top".

Cung cấp dự phòng noframes

Trước đây, phần tử noframes được sử dụng để cung cấp dự phòng cho các trình duyệt không hỗ trợ khung HTML. Hiện tại, tất cả các trình duyệt hiện đại đều hỗ trợ khung, nhưng thực tế không hỗ trợ noframe. Do đó, chúng tôi không cần tạo dự phòng noframes khi làm việc với khung nữa.

Cách tạo khung phản ứng nhanh

Khi sử dụng khung, rất khó để đảm bảo sự dễ sử dụng cho khách truy cập trang web từ điện thoại thông minh và viên nhỏ. Vì các khung đã bị xóa hoàn toàn khỏi HTML5 và được coi là không được dùng nữa nên điều quan trọng là chủ sở hữu các trang web được xây dựng bằng khung phải có kế hoạch xây dựng lại tài nguyên của họ và chuyển sang các công nghệ khác.

Sử dụng hàng thay vì cột

Nếu có thể, hãy sắp xếp các khung theo hàng thay vì cột. TRÊN màn hình nhỏ Việc điều hướng nội dung theo chiều dọc dễ dàng hơn nhiều so với chiều ngang. Các khung HTML được sắp xếp thành một hàng sẽ dễ xem hơn nhiều màn hình nhỏ. Nếu chúng ta giảm độ rộng của bố cục chứa hàng và cột, mô phỏng Màn hình táo IPhone 6, chúng ta sẽ thấy hàng thuận tiện hơn nhiều so với cột:


Sử dụng tỷ lệ phần trăm cho chiều rộng cột

Khi kích thước cột được đặt theo tỷ lệ phần trăm thay vì pixel, chúng sẽ tự động thay đổi kích thước dựa trên kích thước màn hình thiết bị. Mặc dù điều này có thể tạo ra một số vấn đề trong đó một số khung hình có thể trở nên quá nhỏ nhưng trải nghiệm xem và tương tác tổng thể sẽ tốt hơn nếu chiều rộng tổng thể của các cột được chỉ định theo tỷ lệ phần trăm thay vì pixel.

Cách chuyển từ khung sang công nghệ khác

Cả phần tử bộ khung và phần tử khung đều đã bị xóa khỏi đặc tả HTML5 mới nhất. Chủ sở hữu trang web được xây dựng bằng khung phải xây dựng lại nội dung của họ để xóa chúng khỏi bố cục. Đến một lúc nào đó, trình duyệt sẽ ngừng hỗ trợ các khung. Vì vậy, việc bỏ khung không chỉ là mong muốn mà còn phải được thực hiện.

Đánh giá nội dung chứa trong khung

Bước đầu tiên để thiết kế lại trang web sử dụng iframe HTML là xác định lý do tại sao khung được sử dụng:

  • Các khung có được sử dụng để tạo bố cục cụ thể không? Nếu vậy, CSS có thể được sử dụng để tạo bố cục tương tự;
  • Khung có được sử dụng để tạo kích thước vùng chứa quảng cáo cụ thể không? Có nhiều cách để tạo lại hiệu ứng này bằng CSS hoặc các tiện ích được thiết kế để hoạt động với CMS;
  • Các khung có được sử dụng để tạo các menu điều hướng cố định không? Một lần nữa, hiệu ứng tương tự có thể được tạo lại bằng CSS;
  • Các khung có được sử dụng để tải nội dung từ một trang web bên ngoài không? Nếu vậy thì phần tử iframe, một phần của HTML5, có thể được sử dụng để nhúng nội dung từ một trang web bên ngoài.

Trong hầu hết mọi trường hợp, bạn có thể sử dụng CSS để tạo lại bố cục được thiết kế bằng khung và iframe có thể được sử dụng để nhúng các tài nguyên bên ngoài.

Hướng dẫn

Ngôn ngữ HTML (Siêu văn bản Ngôn ngữ đánh dấu- “ngôn ngữ đánh dấu siêu văn bản”) cung cấp hai loại khung. “Nổi” linh hoạt hơn và dễ dàng chèn vào cái hiện có hơn. TRONG trường hợp chung Cấu trúc mô tả việc chèn một cửa sổ bằng khung nổi trông như thế này: Ở đây, nguồn dữ liệu cho khung này là trang web hiện có (thuộc tính src). Nó sẽ được mở trong khung có kích thước 400 x 300, như được chỉ định trong thuộc tính chiều rộng và chiều cao. Bạn cũng có thể chỉ định trang trên trang web của mình trong thuộc tính src. Trong trường hợp này, chỉ cần thiết lập là đủ địa chỉ tương đối(nghĩa là địa chỉ liên quan đến trang được chèn khung): Trong ví dụ này, chiều cao của khung không được chỉ định nhưng có thuộc tính id. Bằng cách sử dụng nó, bạn có thể sử dụng CSS() để đặt khung này theo kích thước được yêu cầu:

Một loại khung khác - "cổ điển" - yêu cầu một trang riêng chứa mô tả về cấu trúc của khung. Sami khung sẽ ở trong trang riêng biệt, thậm chí có thể trên các trang web riêng lẻ. Mã HTML cho một trang chứa khung như vậy có thể trông như thế này:




Không có khối ... Và ... , bắt buộc đối với trang thông thường, không nên ở đây. Trong ví dụ này, thẻ mở của vùng chứa. chứa thuộc tính row - điều này có nghĩa là không gian trang phải được chia theo chiều dọc và khung đầu tiên sẽ được cung cấp phần trên cùng. Nếu bạn thay thế hàng bằng cột, phép chia sẽ theo chiều ngang. Giá trị của thuộc tính này "*,*" cho biết tỷ lệ phân chia là 50%. Ví dụ: nếu bạn chỉ định “20%,*”, thì chỉ 20% sẽ được cấp cho khung hình đầu tiên và phần không gian còn lại sẽ được cấp cho khung hình thứ hai. Người dùng có thể thay đổi các tỷ lệ này bằng cách kéo các đường viền của. các khung bằng chuột, nhưng có thể cấm hành động này. Để làm điều này, bạn cần thêm thuộc tính noresize vào thẻ của một khung cụ thể. Bạn cũng có thể chỉ định kích thước của lề dọc và ngang từ khung liền kề (thuộc tính lề rộng và chiều cao lề): Có thể đặt quy tắc hành vi cho các thanh cuộn của từng khung riêng biệt. Điều này được thực hiện bằng cách sử dụng thuộc tính cuộn, thuộc tính này có thể chứa một trong ba giá trị được xác định trước. Nếu bạn chỉ định cuộn = "tự động", thì cuộn sẽ xuất hiện khi nội dung của khung không vừa với ranh giới của nó. Nếu "có" - các sọc sẽ xuất hiện liên tục, bất kể chúng có cần thiết hay không. Nếu "không" - điều này có nghĩa là thanh cuộn bị tắt đối với khung này.

Dựa trên thông tin được trình bày trên hai các bước trước, bạn cần xây dựng mã html phù hợp hơn để giải quyết vấn đề của mình. Sau đó, tất cả những gì còn lại là chèn nó vào mã nguồn của trang. Để thực hiện việc này, bạn có thể sử dụng trình chỉnh sửa trang của hệ thống quản lý trang web của mình - mở trong đó trang mong muốn, chuyển sang chế độ chỉnh sửa mã html và dán mã của bạn vào vị trí mong muốn trên trang. Tôi có thể có một tập tin? mã nguồn trang quản lý quản lý tập tin lưu trữ hoặc hệ thống quản lý nội dung, hãy mở nó trong soạn thảo văn bản và dán mã vào đó. Và sau đó sử dụng phương pháp tương tự để tải mã đã thay đổi lên .

Chắc chắn bạn đã nhiều lần nghe về một khái niệm như khung. Bạn có thể đọc về chúng trong bất kỳ sách giáo khoa html nào cũng như trên các tài nguyên về tạo trang web. Sau khi nghiên cứu nhiều ví dụ và mô tả, tôi quyết định kể mọi thứ về khung bằng lời của mình dưới một hình thức rất đơn giản. Những ưu, nhược điểm và tương lai của gọng kính sẽ được thảo luận ở cuối trang này. Vậy khung trong html là gì?

Khung trong html là gì

Khung(Khung tiếng Anh) - một số khu vực độc lập có thể kết nối trên trang web.

Đừng lo lắng vì điều này nghe có vẻ hơi khó hiểu. Hãy đưa ra ngay ví dụ đơn giản nhất và sau đó mọi thứ sẽ trở nên rõ ràng.

Mở trợ giúp trong bất kỳ chương trình nào (có thể là notepad, chương trình nào đó, trình duyệt, v.v.). Hầu như bạn luôn thấy trợ giúp bao gồm hai phần (điều hướng ở bên trái, nội dung ở bên phải). Phần bên trái và bên phải chỉ là các khung riêng biệt. Dưới đây là ảnh chụp màn hình được chụp từ sự trợ giúp của notepad Windows thông thường nhất:

Hình 1. Ví dụ sử dụng khung sử dụng trợ giúp notepad

Những gì bạn nhìn thấy là một trang web bao gồm hai khung độc lập riêng biệt. Hãy đưa ra một ví dụ Mã HTML một khung như vậy từ sự giúp đỡ.

Ví dụ với khung số 1 (thực hiện trợ giúp)

Trong khuôn khổ ở trên, trợ giúp được thảo luận ở trên sẽ giống như sau:


Hình 2. Khung sử dụng khung ví dụ số 1

Việc chia trang thành các vùng bằng khung rất giống với cách bố trí bảng. Bố cục HTML(xem thẻ bảng HTML). Mã ví dụ cho một trang như vậy có thể trông như thế này:

<span>Ví dụ số 1 về một trang html có khung</span>
Giải thích ví dụ số 1

Như bạn có thể thấy từ đoạn mã trên, một trang được tạo từ các khung rất giống với một trang html thông thường: có một thẻ html mở, một phần , tiêu đề , nhưng có một sự khác biệt lớn. Bạn có thể nhận thấy rằng thẻ body, chịu trách nhiệm về nội dung của trang, bị thiếu. Thay vào đó, thẻ được chèn vào <frameset>, chịu trách nhiệm về phần thân của trang. Thẻ này có hai thuộc tính cols="25%,75%" , có nghĩa là chia toàn bộ nội dung trang thành hai khu vực theo chiều dọc theo tỷ lệ 1:3. Vùng đầu tiên sẽ chiếm 25% chiều rộng của toàn bộ màn hình (nó sẽ chứa khung menu.html đầu tiên), vùng thứ hai sẽ chiếm 75% chiều rộng của toàn bộ màn hình (nó sẽ chứa nội dung thứ hai. khung html).</p> <p>Thẻ hoàn toàn tùy chọn cuối cùng là <noframes>. Nó cần thiết cho các trình duyệt không hỗ trợ khung. Nếu trình duyệt không hỗ trợ khung, bạn nên thông báo một cách lịch sự cho người dùng về điều này thông qua thẻ này.</p> <p>Nhân tiện, xin lưu ý rằng đối với thẻ <frame>không cần thẻ đóng.</p> <p>Tôi hy vọng bây giờ bạn đã có ý tưởng về khung. Để hiểu những ví dụ khó hơn, chúng ta hãy thử tạo <a href="https://viws.ru/vi/sozdanie-prostoi-html-stranicy-v-bloknote-kak-sozdat-html-stranicu.html">trang html đơn giản</a> gồm 4 khung. Đây sẽ là ví dụ # 2.</p> <h2>Ví dụ với 4 khung hình số 2</h2> <p>Khung ví dụ 2:</p> <p><img src='https://i1.wp.com/zarabotat-na-sajte.ru/uroki-html/img/primer2-frame-karkas.jpg' width="100%" loading=lazy loading=lazy><br>Hình 3. Khung sử dụng khung ví dụ số 2</p> <p>Code của trang HTML gốc có khung sẽ như sau:</p> <blockquote><html > <head > <title ><span>Ví dụ số 2 về một trang html có khung</span> <span>Trình duyệt của bạn không hỗ trợ hiển thị khung</span>

Mã tập tin Top.html

<span>Tệp top.html - tiêu đề trang web</span>

Ví dụ số 2

Và ở đây có thể có logo và hơn thế nữa :)

Mã tập tin Menu.html

<span>Tệp menu.html - menu trang web</span>

Mã tệp Content.html

<span>Tệp content.html - nội dung trang web</span>

Trang chủ

Nội dung trang web. Tệp content.html hiện đang mở
Đây là trạng thái ban đầu của khung của chúng tôi. Hãy gọi tập tin này là "Trang chính"

Mã tập tin about-site.html

<span>File about-site.html - Trang về trang web</span>

Giới thiệu về trang web

Trang về trang web. Tệp about-site.html hiện đang mở

Mã tập tin about-autor.html

<span>Tệp about-autor.html - về tác giả</span>

Giới thiệu về tác giả

Về trang tác giả. Tệp about-autor.html hiện đang mở

Mã tập tin Footer.html

<span>File footer.html - về trang web</span> Chân trang của trang web. Tệp footer.html hiện đang mở
Giải thích ví dụ số 2

Ban đầu, toàn bộ trang được chia thành ba khu vực theo chiều ngang theo tỷ lệ 3:14:3. Thuộc tính row="15%,70%,15%" chịu trách nhiệm cho việc này. Khung đầu tiên trong ví dụ của chúng tôi là tiêu đề (chúng tôi gọi nó là top.html), 15% không gian chiều cao được phân bổ cho nó. Tiếp theo là một khung lớn chiếm 70% chiều cao. Chúng tôi chia nó thành hai phần bằng cách sử dụng cols="25%,75%" theo tỷ lệ 1:3. Bên trái sẽ có khung menu.html, bên phải content.html. Chúng tôi đặt tên cụ thể cho khung thứ hai là name="main" để có thể chuyển trang. Lưu ý rằng trong tệp menu.html, mỗi liên kết có thuộc tính target="main" được đính kèm, cho phép các mục được tải vào một khu vực được gọi là chính khi liên kết được nhấp vào. Ở cuối trang web là footer.html khung cuối cùng.

Nếu bạn triển khai ví dụ số 2, bạn sẽ nhận được trang HTML sau ở trạng thái ban đầu:


Hình 4. Ví dụ số 2 - trạng thái ban đầu

Khi bạn vào trang giới thiệu của trang web, trang sẽ có dạng như sau:


Hình 5. Ví dụ số 2 - trạng thái thứ hai


Hình 6. Ví dụ số 2 - trạng thái thứ ba

Nhãn

Các thuộc tính tùy chọn của thẻ này là width="width" và Height="height" và thuộc tính bắt buộc là src="frame address" .

Thuộc tính và thuộc tính thẻ

1. Thuộc tính COLS="Tham số"
Đặt số lần chia trang theo chiều dọc.

2. Thuộc tính ROWS="Parameter"
Đặt số lần chia trang theo chiều ngang.

Bây giờ hãy xem cách bạn có thể thiết lập các tham số phân vùng.

a) Sử dụng số sẽ tương ứng với số pixel. Ví dụ: cols = "100.100.300" đặt trang được chia thành ba khu vực, mỗi khu vực sẽ có chiều rộng tương ứng là 100 pixel, 100 pixel và 300 pixel.

b) Sử dụng tỷ lệ phần trăm tổng chiều rộng/chiều cao. Trong các ví dụ được thảo luận ở trên, chúng tôi đã sử dụng phép chia theo tỷ lệ phần trăm, vì vậy việc đưa ra ví dụ có vẻ vô nghĩa.

c) Sử dụng * (dấu hoa thị). Ví dụ: cols = "2*,3*,100" đặt hai vùng đầu tiên thành tỷ lệ 2:3 và vùng thứ ba rộng 100 pixel.

Tất cả ba phương pháp có thể được kết hợp. Ví dụ: cols="2*,100,15%,4*" .

3. Thuộc tính Frameborder="(yes|no)"
Xác định xem khung có đường viền hay không. Nếu câu trả lời là có thì thuộc tính đường viền thứ tư tiếp theo sẽ có hiệu lực.

4. Thuộc tính border="parameter"
Tính bằng pixel, đường viền chỉ định độ dày đường viền của vùng khung. Ví dụ: frameborder = "2" chỉ định một khu vực có đường viền được chọn là 2 pixel.

5. thuộc tính bordercolor="color"
Chỉ định màu của đường viền, nếu có. Màu sắc có thể được chỉ định bằng từ hoặc bằng mã (xem bảng màu html).

Lưu ý: Xin lưu ý rằng thẻ cần một thẻ đóng .

Thuộc tính và thuộc tính thẻ

1. Thuộc tính src="địa chỉ phần tử"
URL đầy đủ tới địa chỉ phần tử phải được chỉ định làm tham số ở đây. Thuộc tính này là bắt buộc. Anh ấy đã quen thuộc với bạn rồi, bởi vì... nó đã có mặt trong ví dụ 1 và 2.

2. Thuộc tính lềwidth="number"
Đặt chiều rộng của vết lõm bên trong khung từ đường viền bằng pixel. Ví dụ: Marginwidth="10" sẽ đặt lề nội dung ở bên trái và bên phải của viền khung.

3. Thuộc tính lềhight="number"
Tương tự như cái thứ hai với điểm khác biệt duy nhất là nó đặt độ lệch chiều cao.

4. Thuộc tính Scrolling="(yes|no|auto)"
Đặt khả năng cuộn khung nếu nó không vừa với khu vực được phân bổ cho nó. Giá trị mặc định là tự động (có nghĩa là tạo cuộn nếu cần).

5. Thuộc tính Noresize
Nếu thuộc tính này được đặt, người dùng sẽ bị cấm thay đổi ranh giới khung một cách độc lập. Theo mặc định, thuộc tính này không được đặt và người dùng có thể thay đổi ranh giới theo ý muốn.

5. Tên thuộc tính="title"
Thuộc tính này có thể được sử dụng để đặt tên cho khung. Điều này là cần thiết để các khung khác có thể truy cập vào khung này. Ví dụ số 2 chỉ giải quyết trường hợp như vậy.

Ghi chú:
Tên không được bắt đầu bằng dấu gạch dưới "_".

6. Thuộc tính khung viền, đường viền và màu đường viền
Ba thuộc tính này giống như bộ khung (xem thuộc tính bộ khung ở trên).

Ưu điểm và nhược điểm của khung

Ưu điểm của khung

  • Khả năng hiển thị nhiều trang độc lập trong một cửa sổ (ví dụ 1 và 2 ở trên);
  • Khả năng chuyển đổi nội dung trang mà không cần tải lại trang (chỉ một vùng trên màn hình thay đổi);
  • Khả năng xây dựng cấu trúc trang web một cách linh hoạt (tiêu đề, menu, chân trang, v.v. - tất cả thông tin tĩnh được lưu trữ riêng biệt trong các tệp và điều này cho phép bạn nhanh chóng chỉnh sửa một phần của trang web);
  • Người dùng có thể tự thay đổi kích thước của khung nhìn nếu tùy chọn noresize không được đặt;

Nhược điểm của khung

  • Công cụ tìm kiếm lập chỉ mục các trang web có khung kém vì chúng không thể diễn giải các tệp được tải trong khung. Công cụ tìm kiếm phân biệt các trang theo địa chỉ (URL) của chúng và đối với các khung, mặc dù có trạng thái khác nhau nhưng địa chỉ trang không thay đổi. Nó trái với quy định máy tìm kiếm, điều đó có nghĩa là thực tế không phải công cụ tìm kiếm nào cũng có thể lập chỉ mục trang web.
  • Không thể đánh dấu một trang web trong khung, bởi vì URL trang sẽ giống nhau. Vì vậy, bạn chỉ có thể lưu trạng thái ban đầu khung.
  • Không phải tất cả các trình duyệt đều hỗ trợ khung.

Tương lai của khung hình:
Nhiều quản trị viên web từ lâu đã bắt đầu từ bỏ khung hình. Điều này là do những khó khăn trong việc quảng bá trên các công cụ tìm kiếm. Bây giờ mọi người đang chuyển sang Ajax như một cách hiển thị thông tin năng động và hiện đại hơn trên một trang của trang web.

Bạn đọc thân mến, chúng tôi đã xem xét thẻ html tài liệu liên quan đến khung. Bất chấp tương lai không rõ ràng của lĩnh vực này, mọi quản trị viên web đều nên biết về khung.

Hãy bắt đầu với cấu trúc khung. Bản chất của nó là gì? Trong tài liệu mà chúng tôi tải vào trình duyệt, chúng tôi có cơ hội sắp xếp các khu vực kiểu cửa sổ đặc biệt. Những người khác có thể được tải vào các khu vực này. tài liệu cá nhân(trang web).

Tại sao điều này là cần thiết? Vì các tài liệu được tải vào các khu vực riêng biệt nên chúng hoạt động độc lập. Tức là bạn có thể thực hiện điều gì đó trong một tài liệu trong khi các tài liệu khác vẫn không thay đổi.

Bạn có thể tìm thấy cấu trúc khung như vậy ở đâu? Đây là các tệp trợ giúp (có phần mở rộng .chm).

Đây là một ví dụ đơn giản về tài liệu có khung:

Khung mẫu Bạn đang xem trang này bằng trình duyệt không hỗ trợ khung.

Yếu tố bộ khung. Công việc của nó là bao phủ khu vực xem và chia thành các khu vực riêng biệt. Những thứ kia. hướng dẫn trình duyệt theo tỷ lệ nào và cách chúng tôi phân chia các khu vực này (theo chiều ngang hoặc chiều dọc).

Yếu tố khung– mô tả từng khu vực riêng lẻ như vậy. Thẻ đơn. Nó chiếm các kích thước được chỉ định trong bộ khung.

Yếu tố noframe- hiển thị nếu trình duyệt không hỗ trợ khung.

Lưu ý rằng không có phần tử cơ thể. Phần tử frameset được sử dụng thay thế. Đây là một trong những lý do khiến khung hình không còn được sử dụng trên các trang web.

Thuộc tính phần tử Frameset

  • cols - phân chia theo chiều dọc của trang thành các khu vực xem.
  • hàng - phân chia trang theo chiều ngang thành các khu vực xem.

phần tử khung

Phần tử này mô tả một khu vực cửa sổ duy nhất. Bạn có thể tải bất kỳ tài liệu nào vào đó bằng thuộc tính src. Ví dụ:

Thuộc tính cuộn- cuộn (tự động theo mặc định). Nếu tài liệu vượt quá vùng xem của khung này, quá trình cuộn sẽ xảy ra. Nếu tài liệu nằm hoàn toàn trong khung thì sẽ không có thao tác cuộn. Tính năng cuộn có thể bị tắt nhưng tốt hơn là để nó ở chế độ tự động.

Thuộc tính đơn kích thước vừa phải- cấm thay đổi kích thước khung hình trong trình duyệt. Theo mặc định điều này được cho phép.

Thuộc tính khung viền- từng khung hình. Giá trị '1' - vẽ, giá trị '0' - không vẽ. Chỉ có hai giá trị này là hợp lệ. Theo mặc định, khung được vẽ.

Thuộc tính Chiều rộng lề– cho biết khoảng cách mà nội dung trong một khung nhất định sẽ lùi lại theo chiều ngang so với các khung của khung này.

Thuộc tính chiều cao lề– thụt lề dọc từ nội dung đến viền khung.

Khung nội tuyến được nhúng

Yếu tố khung nội tuyến(“cửa sổ dòng”). Phần tử này được ghép nối (có thẻ mở và thẻ đóng). Phần tử này phục vụ cùng một mục đích - để sắp xếp phần tử cửa sổ trong tài liệu.

Nó khác với các khung hình cũ như thế nào? Nó có thể tự cung cấp và không cần thêm bất kỳ thùng chứa nào. Và nó có thể xuất hiện trong bất kỳ tài liệu nào, vì vậy ở đâu có phần tử nội dung.

Phần tử iframe là phần tử nội tuyến có nội dung có thể thay thế. Những thứ kia. một vùng thuộc loại đường với bất kỳ kích thước trừu tượng nào được hình thành và nội dung của một số tài liệu bên ngoài (tệp html) được tải vào vùng này.

Iframe có các thuộc tính giống như hình ảnh (vì chúng cùng loại): tên, chiều rộng, chiều cao, src, viền khung, cuộn, hspace, vspace, lề rộng, chiều cao lề.