In lạiTác giả: IT Lão CaoThời gian cập nhật: 28-10-2023 11:04:40254
câu hỏi
tôi có một cái một trong số đó làGiá trị văn bản rất dài. Tôi muốn Thay đổi kích thước để nó không bao giờ rộng hơn cha mẹ của nó, ngay cả khi nó phải cắt bỏ phần văn bản hiển thị. chiều rộng tối đa: 100%Nó nên được thực hiện.
Trước khi thay đổi kích thước:
Những gì tôi muốn sau khi thay đổi kích thước:
nhưng nếu bạntải ví dụ jsFiddle nàyvà điều chỉnh độ rộng của bảng kết quả nhỏ hơn Có thể thấy chiều rộngViệc chọn bên trong không thể giảm chiều rộng của nó.
Những gì tôi thực sự thấy sau khi thay đổi kích thước:
Tuy nhiên,trang tương đương với một thay vì một Chia tỷ lệ chính xác. Bạn có thể nhìn thấy vàkiểm tra những thay đổi của bạn dễ dàng hơnnếu bạn có Một và một cạnh nhau trên một trang .Nếu bạn xóa bỏ xung quanh thẻ , thay đổi kích thước có hiệu quả. Các nhãn bằng cách nào đó khiến việc thay đổi kích thước theo chiều ngang bị hỏng. Hành động như có một quy tắc CSS fieldset { chiều rộng tối thiểu: nội dung tối thiểu; } . ( nội dung tối thiểu Nói một cách đại khái, chiều rộng tối thiểu sẽ không khiến trẻ bị tràn. ) nếu tôi thay thế Và với min-width: min-content , trông giống hệt nhau. Tuy nhiên,nội dung tối thiểu Không có quy tắc nào cả. Hiển thị trong Kiểu của tôi, trong biểu định kiểu mặc định của trình duyệt hoặc trong Trình kiểm tra CSS của Fireorms. Tôi đã cố gắng ghi đè Tất cả các kiểu hiển thị trong CSS Inspector của Firebug và biểu định kiểu mặc định của Firefox forms.css , nhưng điều đó không giúp ích gì. bảo hiểm đặc biệt chiều rộng tối thiểuVà chiều rộngKhông làm gì cả.
mã số
HTML cho bộ trường:
Ventura
CSS của tôi sẽ hoạt động nhưng không:
trường tập hợp { /* ẩn các tính năng trực quan cụ thể của fieldset: */ margin: 0; padding: 0; đường viền: không có; }
lựa chọn { chiều rộng tối đa: 100%; }
cài lại
chiều rộngthuộc tính cho
mặc địnhKhông có gì được thực hiện:
trường tập hợp { chiều rộng: tự động; chiều rộng tối thiểu: 0; chiều rộng tối đa: không có; }
/* thử nhiều cách để sửa chiều rộng nhưng không thành công: */ trường tập hợp { hiển thị: khối; chiều rộng tối thiểu: 0; chiều rộng tối đa: 100%; chiều rộng: 100%; tràn văn bản: clip; }
div.wrapper { chiều rộng: 100%; }
lựa chọn { tràn: ẩn; }
biết thêm chi tiết
Vấn đề này cũng xảy ra trong
ví dụ jsFiddle toàn diện hơn, phức tạp hơn , tương tự với trang web mà tôi thực sự đang cố sửa. Nó có thể được nhìn thấy từ
Không thành vấn đề – khối nội tuyến
phân chiaCũng không thể thay đổi kích thước. Mặc dù ví dụ này phức tạp hơn nhưng tôi nghĩ cách khắc phục cho trường hợp đơn giản ở trên cũng sẽ khắc phục được trường hợp phức tạp hơn này.
[EDIT: Xem chi tiết hỗ trợ trình duyệt bên dưới. ]
Một điều kỳ lạ về vấn đề này là
nếu bạn đặt div.wrapper { chiều rộng: 50%; } ,
Dừng thay đổi kích thước chính nó tại thời điểm này, sau đó kích thước đầy đủ
Sẽ chạm vào mép của khung nhìn. thay đổi kích thước như
có
chiều rộng: 100% ,mặc dù
có vẻ như nó có
chiều rộng: 50% .
Lý do tôi đang cố gắng thực hiện điều này là một phần của việc viết kiểu di động cho một trang hiện có có biểu mẫu lớn. Biểu mẫu có nhiều phần, một số phần được gói gọn trong
ở giữa. .Trên điện thoại thông minh của bạn (hoặc nếu bạn thu nhỏ cửa sổ trình duyệt), với
Phần của trang rộng hơn nhiều so với phần còn lại của bảng. Hầu hết các biểu mẫu đều giới hạn chiều rộng của chúng một cách hợp lý, nhưng với
Một phần sẽ không buộc người dùng phải thu nhỏ hoặc cuộn sang phải để xem toàn bộ nội dung trong phần đó.
Tôi quan tâm đến việc đơn giản là loại bỏ
Hãy thận trọng vì nó được tạo trên nhiều trang của một ứng dụng lớn và tôi không chắc bộ chọn nào trong CSS hoặc JavaScript có thể phụ thuộc vào nó.
Tôi có thể sử dụng JavaScript nếu cần, giải pháp JavaScript vẫn tốt hơn là không có gì. Nhưng nếu JavaScript là cách duy nhất để làm điều này thì tôi rất muốn nghe lời giải thích tại sao không thể thực hiện được điều này chỉ bằng CSS và HTML.
EDIT: Hỗ trợ trình duyệt
Trên trang web, tôi cần hỗ trợ Internet Explorer 8 trở lên (chúng tôi vừa bỏ hỗ trợ cho IE7), Firefox mới nhất và Chrome mới nhất. Trang cụ thể này cũng sẽ hoạt động trên điện thoại thông minh iOS và Android. Internet Explorer 8 có thể chấp nhận hoạt động hơi xuống cấp nhưng vẫn có thể sử dụng được.
Do đó, trình duyệt duy nhất tôi quan tâm đến việc phá mã hiện tại của mình là Firefox (trên máy tính để bàn và thiết bị di động). Nếu mã được sửa để nó hoạt động trong Firefox mà không bị hỏng trong bất kỳ trình duyệt nào khác, điều đó sẽ giải quyết được vấn đề của tôi.
Mẫu HTML của trang web sử dụng các nhận xét có điều kiện của Internet Explorer để thêm các lớp, chẳng hạn như
.ie8Và
.người giàđến
yếu tố. Nếu bạn cần giải quyết sự khác biệt về kiểu dáng trong IE, bạn có thể sử dụng các lớp này trong CSS. Đã thêm lớp với
phiên bản cũ này của HTML5 Boilerplate Tương tự trong .
Ngoài ra, tôi chân thành xin lỗi những người đóng góp cho Mozilla, những người đã phải ngăn chặn việc xóa -moz-tài-liệu ủng hộ. Một phần lý do là câu trả lời này.
Sửa chữa
Trong WebKit và Firefox 53+, bạn chỉ cần đặt chiều rộng tối thiểu: 0;Ghi đè giá trị mặc định trên fieldset nội dung tối thiểu .¹
Tuy nhiên, Firefox hơi... lạ khi nói đến các trường dữ liệu. Để sử dụng tính năng này trong các phiên bản trước bạn phải thay đổi trưng bàyCác thuộc tính của một fieldset là một trong các giá trị sau:
ô bảng (gợi ý)
bảng-cột
nhóm-cột-bảng
nhóm chân trang bảng
nhóm-tiêu-đề-bảng
hàng bàn
nhóm-hàng-bảng
Trong số đó, tôi khuyên bạn nên ô bảng .Cả hai
hàng bànVà
nhóm-hàng-bảngngăn cản bạn thay đổi chiều rộng trong khi
bảng-cộtVà
nhóm-cột-bảngNgăn cản bạn thay đổi độ cao.
Việc hiển thị mặc định của các phần tử fieldset là vô lý và về cơ bản là không thể chỉ định trong CSS. Hãy suy nghĩ về điều này: đường viền của fieldset biến mất ở nơi nó chồng lên phần tử chú giải, nhưng nền vẫn hiển thị! Không có cách nào để tái tạo điều này bằng bất kỳ sự kết hợp phần tử nào khác.
Quan trọng nhất, việc thực hiện đầy rẫy những nhượng bộ đối với hành vi cũ. Một trong số đó là chiều rộng tối thiểu của bộ trường không bao giờ nhỏ hơn chiều rộng nội tại của nội dung của nó. WebKit cung cấp cho bạn cách ghi đè hành vi này bằng cách chỉ định nó trong biểu định kiểu mặc định, nhưng Gecko² còn tiến thêm một bước,
thực thi nó trong công cụ kết xuất .
Tuy nhiên, các phần tử bảng bên trong tạo thành một
loại khung đặc biệtỞ tắc kè. Có hạn chế về kích thước trên các phần tử này
trưng bàyGiá trị được đặt ở
đường dẫn mã riêng biệt Tính toán trung bình, bỏ qua hoàn toàn chiều rộng tối thiểu bắt buộc được áp dụng cho bộ trường.
lại--
lỗi cho cái nàyĐã sửa lỗi kể từ Firefox 53, vì vậy bạn không cần bản hack này nếu bạn chỉ nhắm mục tiêu vào các phiên bản mới hơn.
đang được sử dụng
@-moz-tài liệuAn toàn?
Đối với câu hỏi này, vâng. @-moz-tài liệuHoạt động như mong đợi trong tất cả các phiên bản Firefox cho đến phiên bản 53, khi lỗi này được khắc phục.
bên cạnh đó,
không sử dụng @-moz-tài liệuNhắm mục tiêu Firefox trong CSS , bất chấp các nguồn lực khác. ³
¹ Giá trị có thể được thêm tiền tố. Theo một độc giả, tính năng này không hoạt động trong Trình duyệt chứng khoán Android 4.1.2 và có thể cả các phiên bản cũ hơn khác;
Tôi đang làm việc trong một dự án trong đó Android của tôi hoạt động như một máy chủ web; nhập địa chỉ IP có số cổng sẽ mở giao diện web và người dùng có thể tải tệp lên điện thoại. Tôi muốn hiển thị một số hình ảnh trên giao diện web để giao diện của chúng tôi
Tôi là một lập trình viên xuất sắc, rất giỏi!