Hide and display content html

how to hide content in html?

I have a website that is primarily used in K-12 schools. I have some social media buttons on it like Facebook ‘like’ and Pinterest ‘pin it’. However, I’d like to have these buttons be hidden. where you have to click once on something (like an image that is covering them up but disappears when clicked. or a tab that just sort of scrolls away to reveal the buttons behind it). The reason for this is because these sites are usually blocked in schools (I realize there’s probably nothing I can do about this) and these buttons look kind of ugly when they’re blocked (it’ll show a question mark or or something in place of the button in these cases). However, I do want the people who do not have them blocked to be able to access and see them easily. I am in search of a simple solution to this where the buttons wouldn’t be immediately visible until you click on something.

2 Answers 2

If you’re using JQuery or any other support library, you would have plenty of way to achieve your goal, even with a lot of visual effects.

Anyway, the simplest way to achieve it is by playing with the «display» attribute of the element.

Add this in your html head tag:

Читайте также:  Feedback form in html template

If you want to hide your «hidden» element by default, add a inline style:

Obviously, there are a lot of better ways to achieve it (eg. changing css classes), but I think you would be able to work with the above instructions.

Edited to improve the answer:

Create an HTML structure like the following:

So, when you click the image, the buttons appear and the image disappear.

I’m not sure what you meant by changing css classes or what that would do, but I’m just searching for the most simple solution to this. Someone else suggested to me the following: «Put the content that you want to SHOW/HIDE in a

.

tag and control HIDE/SHOW of the

element via JavaScript.» I don’t really know anything about javascript, but would this be an effective solution? (Also, how do I accept answers on previous questions?)

IMHO the most simple and immediate solution is the one I suggested. Playing with css classes, you could create a class eg(.hide) and add it to hide an element, or remove it to show the element. To accept, please click on the tick on the left of the answer 🙂

So. I’m not real clear on exactly what the solution that you proposed would accomplish. The user would have to click on something first in order to see the hidden content?

In your question you said that you want an element (eg. an image) that, when clicked, will hide itself and show an hidden content (eg. your buttons). So the image is the «img» in my sample and the buttons container is the «div». Click the image to hide it and show the buttons 🙂

I’m not sure what you meant by «if you want to hide your «hidden» element by default, add an inline style». isn’t that the point of what I’m trying to do? Anyways, I think I’m going to give this a shot, but I just want to make sure I’m doing it right.

Thanks for your help! I tried this and it works well. I think it was a pretty simple solution (even though I don’t know javascript) and accomplished just what I wanted to do, which was to basically hide those buttons until an image that is covering them is clicked. Just for the record, here’s the exact code I used:

 function showElement() < var myElement = document.getElementById('elementId'); myElement.style.display = ''; hideImage(); >function hideImage() 

(All I changed was adding the missing quotation mark on the first line and took out that one line about referencing to the element since I assume that is something optional.) For the html part, here’s exactly what I did:

 
cover
(hidden content went here)

(I didn’t change much on this part either other than closing the image tag, putting in the dimensions for the image, etc.) Hopefully, I didn’t do any of this wrong, but it seems to work as intended. The only other thing that would be a nice touch would be if there was a way to make it have the ‘hand with pointing finger’ symbol appear when you hover over it. in order to make it clear that it is a clickable image, but if not, it’s not essential.

Источник

Как прятать

Зависит от того, что вы пытаетесь сделать. Есть и другие варианты как спрятать блок и даже специальный атрибут.

Если вам приходится что-то прятать, то лучше всего это вообще убрать: сайт легче, код чище… ошибок меньше! Но если вам нужно, чтобы оно там пряталось до поры, а потом кому-то пригодилось — это другое дело. Здесь важно не ошибиться с выбором способа.

Самый простой и популярный — display: none, он работает как топор: элемент как будто вырубают из HTML. Его не видно на странице и соседние блоки про него ничего не знают. Просто нет и всё. Его даже скринридеры игоририруют и не читают содержимое — будьте аккуратнее с этим.

Что интересно, несмотря на полное вырубание элемента, браузеры всё равно загружают картинку из img с display: none. Если же картинка указана фоном, то Chrome и Edge её тоже загружают, а Firefox и Safari — нет. Ну, разные у них взгляды на оптимизацию загрузки, что поделать.

Другой способ — visibility: hidden, он работает как кольцо всевластья: элемент вроде здесь и соседние блоки его чувствуют, но его не видно. И чем это отличается от opacity: 0? Opacity просто делает элемент прозрачным (или полупрозрачным), а visibility: hidden ещё не даёт с ним взаимодействовать: навести, кликнуть, сфокусировать.

/* Прячет */ .one-ring < visibility: hidden; >/* Не сработает */ .one-ring:hover

У visibility: hidden есть другая приятная особенность: свойство наследуется, а значит ребёнок невидимого родителя может сменить видимость на visible. Такой трюк не пройдёт ни с display: none, ни с opacity: 0. С ним удобно делать всплывающие меню и подказки.

Иногда нужно, чтобы элемент не мешал дизайну, но при этом не прятался от скринридеров, оставаясь частью содержимого. Ну не нарисовал дизайнер здесь заголовка, а по логике документа он здесь нужен. Вот бы нам что-то вроде display: hidden или visibility: none! Это я только что придумал, в природе их не существует.

Недавно в черновике CSS Display третьего уровня появилось свойство box-suppress со значениями show, discard и hide. Оно отвязывает видимость блока от display — ведь с обратной стороны от none есть не только block, но и inline, flex, grid. Значение discard привычно вырубает элемент, а hide делает то самое волшебное комбо. Читайте подробнее у Рейчел Эндрю.

К сожалению, до box-suppress нам ещё долго ждать. Его не только ещё нет в браузерах, но уже в том черновике — недавно его перенесли в следующий уровень, чтобы закончить текущий вовремя. Так что придётся делать магию самим — следите за руками.

Есть такой паттерн «visually hidden» или «визуально спрятанный», чтобы прятать элементы из дизайна, но оставлять доступным их содержимое. Про другие нюансы со скринридерами читайте у Тима Райта. Как это работает: вы делаете универсальный служебный класс и добавляете его к элементам, которые нужно доступно спрятать. Обычно его так и называют: visually-hidden, через дефис.

 

Важный за головок, которого нет

Если посмотреть что внутри, то это обычный position: absolute плюс clip, который обрезает элемент до нуля. То есть он не влияет на соседей и становится невидимым. Все остальные свойства добавляют универсальности и кроссбраузерности, чтобы класс можно было не глядя шлёпнуть на любой элемент. Подробнее читайте в справке к ally.js Родни Рейма.

А вы знали, что любому элементу можно добавить атрибут hidden и он пропадёт? Теперь знаете! В современных браузерах на этот атрибут повешен тот самый display: none, который вырубает элемент. Он бинарный как required или checked, так что его удобно выставлять через JavaScript. Только не забудьте добавить в стили [hidden] < display: none >для IE 10, Safari 5 и других старых браузеров.

  // JS div.hidden = true;

Это почти всё, что вам нужно знать про прятки в CSS. Попробуйте эти способы, они все хороши в разных ситуациях. Главное, не рубите с плеча и думайте о доступном содержимом.

Источник

CSS Layout — The display Property

The display property is the most important CSS property for controlling layout.

The display Property

The display property specifies if/how an element is displayed.

Every HTML element has a default display value depending on what type of element it is. The default display value for most elements is block or inline .

This panel contains a element, which is hidden by default ( display: none ).

It is styled with CSS, and we use JavaScript to show it (change it to ( display: block ).

Block-level Elements

A block-level element always starts on a new line and takes up the full width available (stretches out to the left and right as far as it can).

Examples of block-level elements:

Inline Elements

An inline element does not start on a new line and only takes up as much width as necessary.

This is an inline element inside a paragraph.

Examples of inline elements:

Display: none;

display: none; is commonly used with JavaScript to hide and show elements without deleting and recreating them. Take a look at our last example on this page if you want to know how this can be achieved.

The element uses display: none; as default.

Override The Default Display Value

As mentioned, every element has a default display value. However, you can override this.

Changing an inline element to a block element, or vice versa, can be useful for making the page look a specific way, and still follow the web standards.

Example

Note: Setting the display property of an element only changes how the element is displayed, NOT what kind of element it is. So, an inline element with display: block; is not allowed to have other block elements inside it.

The following example displays elements as block elements:

Example

The following example displays elements as block elements:

Источник

Hide element, but show CSS generated content

Is there a way of hiding an element’s contents, but keep its :before content visible? Say I have the following code: HTML:

  • using display: none and setting display: inline on :before , but both are still hidden
  • using width: 0; overflow: hidden ;, but then additional space seems to be added (?)
  • using color: transparent;, but then, of course, the content of the span still takes up space
  • using text-indent: -. px , but
    1. this is frowned upon by search engines and
    2. it seems not to work for span elements (?)

Any other ideas as to how I might do this?

5 Answers 5

Clean Solution

You could use visibility: hidden , but with this solution, the hidden content will still take up space. If this doesn’t matter to you, this is how you would do it:

Hackish Alternative Solution

Another solution would be to set the font-size of the span to zero * to a really small value. Advantage of this method: The hidden content won’t take up any space. Drawback: You won’t be able to use relative units like em or % for the font-size of the :before content.

Update (May 4, 2015): With CSS3, you can now use the rem (Root EM) unit to maintain relative font-sizes in the :before element. (Browser support.)

*A previous version of this post suggested setting the font size to zero. However, this does not work as desired in some browsers, because CSS does not define what behavior is expected when the font-size is set to zero. For cross-browser compatibility, use a small font size like mentioned above.

Источник

Оцените статью