Ответы пользователя по тегу CSS
  • Перенос inline блоков парами

    @m-haritonov
    @iiil меня опередил:
    <!DOCTYPE html>
    <html>
        <head>
    		<style>
    			div {
    				display: inline-block;
    			}
    			
    			div>div {
    				display: inline-block;
    				width: 100px;
    				height: 100px;
    				background: #ccc;
    			}
    		</style>
        </head>
        <body>
    		<div>
    		   <div>1</div>
    		   <div>2</div>
    		</div>
    		<div>
    		   <div>3</div>
    		   <div>4</div>
    		</div>
    		<div>
    		   <div>5</div>
    		   <div>6</div>
    		</div>
    		<div>
    		   <div>7</div>
    		   <div>8</div>
    		</div>
    		<div>
    		   <div>9</div>
    		   <div>10</div>
    		</div>
    		<div>
    		   <div>11</div>
    		   <div>12</div>
    		</div>
        </body>
    </html>


    UPDATE: более изящный вариант:
    <!DOCTYPE html>
    <html>
        <head>
    		<style>
    			* { margin: 0; padding: 0; }
    			
    			ul { list-style: none; text-align: center; }
    			
    			ul>li {
    				float: left;
    				width: 100px;
    				height: 100px;
    				background: #000;
    			}
    			
    			ul>li:nth-child(odd) {
    				margin-right: 100px;
    				background: #999;
    			}
    			
    			ul>li:nth-child(even) {
    				margin-left: -100px;
    				background: #eee;
    			}
    		</style>
        </head>
        <body>
    		<ul>
    			<li>1</li>
    			<li>2</li>
    			<li>3</li>
    			<li>4</li>
    			<li>5</li>
    			<li>6</li>
    			<li>7</li>
    			<li>8</li>
    			<li>9</li>
    			<li>10</li>
    		</ul>
        </body>
    </html>

    Селектор ":nth-child" в IE доступен лишь начиная с версии 9.0, поэтому, если требуется поддержка более ранних версий IE, можно заменить его добавлением в CSS классов "odd" и "even" при генерации HTML кода.
    Ответ написан
    5 комментариев
  • Структура данных для поиска подходящих CSS-правил

    @m-haritonov
    Не совсем понял в чём вопрос. Если распарсить CSS, то в итоге у Вас будет объектная структура данных CSS таблиц, их правил и селекторов (с которой Вы сможете взаимодействовать программно). И в реализации функции cssTable.get_styles Вам необходимо будет написать код, выполняющий поиск соответствующих CSS правил таблицы стилей по переданному CSS селектору (например, методом сопоставления переданного CSS селектора каждому из CSS селекторов таблицы стилей).

    Т.е. когда функция, подобная Вашей cssTable.get_styles, применяется для поиска HTML элементов, она (руководствуясь переданным её CSS селектором и правилами синтаксиса CSS селекторов), находит нужный HTML элемент из всего дерева (например, сопоставляя по очереди каждый HTML элемент переданному CSS селектору). В Вашем же случае, в качестве HTML документа будет выступать таблица CSS стилей и при поиске Вы будете сопоставлять переданный функции CSS селектор каждому из CSS селектором в Вашей таблицы стилей.
    Ответ написан
  • Проблема масштабирования адаптивной верстки на мобильных браузерах

    @m-haritonov
    Если я всё правильно понял, то у Вас имеется контент, минимальной шириной в 320px и максимальной — в 900px. И Вам надо:
    1. Если размер экрана устройства меньше 900px, то задать ширину viewport'а страницы как у экрана устройства (чтобы произошло перестроение CSS разметки под эту ширину).
    2. Если размер экрана устройства больше или равен 900px, то задать ширину viewport'а страницы в 900px (чтобы на экранах размером в 900px и больше контент увеличивался за счёт масштаба).

    Для этой задачи могу предложить следующее решение (скопируйте из данного примера на свой сайт JavaScript код, разместив его выше всех других подключений и вставок CSS и JavaScript кода). Проверял только на iPad 2.

    <!DOCTYPE html>
    <html>
    	<head>
    		<script type="text/javascript">
    			(function(){
    				// Выполняем код только на мобильных браузерах (на всякий случай)
    				if (typeof(window.orientation) !== 'undefined')
    				{
    					// Функция взята отсюда: https://makandracards.com/makandra/13743-detect-effective-horizontal-pixel-width-on-a-mobile-device-with-javascript
    					function getDeviceWidth()
    					{
    						var deviceWidth = window.orientation == 0 ? window.screen.width : window.screen.height;
    						// iOS returns available pixels, Android returns pixels / pixel ratio
    						// http://www.quirksmode.org/blog/archives/2012/07/more_about_devi.html
    						if (navigator.userAgent.indexOf('Android') >= 0 && window.devicePixelRatio)
    							deviceWidth = deviceWidth / window.devicePixelRatio;
    
    						return deviceWidth;
    					}
    
    					var deviceWidth = getDeviceWidth();
    					var maxWidth = 900;
    					
    					if (deviceWidth < maxWidth)
    					{
    						// Мои эксперименты на iPad 2 показали, что device-width всегда содержит значение ширины 
    						// экрана в книжной (portrait) ориентации (т.е. даже, если устройство находится в 
    						// альбомной (landscape) ориентации). Это же утверждалось в некоторых найденных мною статьях.
    						if (window.orientation == 0 || window.orientation == 180)
    							document.write('<meta name="viewport" content="width=device-width">');
    						else
    							document.write('<meta name="viewport" content="width=device-height">');
    					}
    					else
    						document.write('<meta name="viewport" content="width=' + maxWidth + '">');
    				}
    			})();
    		</script>
    		
    		<style type="text/css">
    			* { margin: 0; padding: 0; }
    			.content { min-width: 320px; max-width: 900px; background: #ffff99; }
    			.content div { border: 1px solid #f00; }
    		</style>
    	</head>
    	<body>
    		<div class="content">
    			<div>
    				abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc
    				abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc
    				abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc
    			</div>
    		</div>
    	</body>
    </html>
    
    Ответ написан
    3 комментария
  • Длинная строка распирает контейнер с min-width?

    @m-haritonov
    Можно перенести .breadcrumbs внутрь блока .content.

    Тогда .breadcrumbs будет иметь ширину не больше, чем .content, а в случае превышения этой ширины содержимое .breadcrumbs будет переноситься на следующую строчку. Это ведь то, что Вы имели ввиду?!

    Сейчас Вы пытаетесь сделать так, чтобы блок .wrapper мог распираться блоком .content, но при этом не мог распираться блоком .breadcrumbs.
    Ответ написан
    Комментировать