Вы можете использовать svg. Сделайте положение контейнера / обертки относительным, сначала установите svg как статически, а затем разместите абсолютно позиционированное содержимое (сверху: 0; слева: 0; справа: 0; внизу: 0;)
Пример с 16: 9 пропорций:
image.svg: (может быть встроено в src)
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 9" width="16" height="9"/>
CSS:
.container {
position: relative;
}
.content {
position: absolute;
top:0; left:0; right:0; bottom:0;
}
HTML:
<div class="container">
<img style="width: 100%" src="image.svg" />
<div class="content"></div>
</div>
Обратите внимание, что встроенный svg не работает, но вы можете urlencode svg и вставить его в атрибут img src следующим образом:
<img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%209%22%20width%3D%2216%22%20height%3D%229%22%2F%3E" style="width: 100%;" />
Если Вы не хотите использовать предварительно скомпилированные заголовки, то нет никакого смысла к использованию стандарта, включают файл - это замедлит сборку для каждого файла, который включает его, и заставьте их включать дополнительный материал, в котором они не нуждаются. Избавьтесь от него и просто включайте заголовки, в которых они нуждаются.
Даже без предварительно скомпилированных заголовков stdafx.h мог быть удобным, поскольку он группируется, заголовок включает и определения, характерные для всех файлов.
Можно, конечно, принять решение повторить все эти определения в каждом файле. stdafx.h не строго необходим.
stdafx.h является просто другим заголовочным файлом. Если Вы упали, Вам не нужен он, не стесняются не включать его и удалять его из проекта.
Однако это довольно типично, чтобы иметь файл как stdafx.h точно для предварительно скомпилированных заголовков, чтобы работать и не включать весь материал вручную в каждый исходный файл.
Можно использовать предварительно скомпилированные заголовки (которые являются хорошей вещью), не используя stdafx.h (я ненавижу ее также). Я только получил доступ к VC ++ 6.0, но в том движении к Settings|C/C Проекта ++ |Precompiled Заголовки и избранное "автоматическое использование предварительно скомпилированного заголовка", но уезжают "скомпилированный через" поле пустой.
Поскольку другие упомянули: если Вам не нужны предварительно скомпилированные заголовки, Вам действительно не нужен stdafx.h. И использование его только для группировки распространенный включает, довольно плохая практика, на самом деле.
На самом деле, даже когда использование предварительно скомпилировало заголовки, это - хорошая практика для включения заголовков, в которых процесс на самом деле нуждается после stdafx.h (или precompiled.h или независимо от того, что Вы хотите назвать его) - наряду с #ifdef волшебством в Вашем предварительно скомпилированном заголовке для выключения использования PCH.
Почему? Для проверки зависимостей от модуля. Способность отключить Ваш PCH позволяет Вам поймать, включаете ли Вы необходимые модули или нет, и можно затем записать инструмент для проверки взаимозависимостей модуля путем парсинга .cpp и.h файлов (исключая заголовок PCH, конечно).