Фактическая причина:
Это не col-sm-12
, а d-flex
на card-img-overlay
, который делает ваш дизайн выглядят не правильно в IE.
Почему?
Когда display:flex
применяется к элементу, непосредственному дочернему элементу (т. Е. Гибким элементам) потребуется определенная ширина или иначе они не будут расширяться или занимать достаточно места, как нам требуется, если только контента недостаточно.
В вашем случае у нас есть d-flex
вдоль card-img-overlay
, поэтому непосредственный дочерний элемент (т.е. элемент flex) этого .row
не будет иметь ширину 100%
. Теперь для столбца col-sm-12
, 100%
будет полным горизонтальным пространством с его родителем (.row
), которое само по себе недостаточно широко. Это реальная проблема здесь.
Решение:
100%
ширину .row
, вы можете использовать класс Bootstrap 4 w-100
. position: absolute
не работает в одиночку, умные браузеры будут знать, что делать, но другие будут нуждаться в значениях смещения, таких как top
& amp; left
. В вашем случае со значением как 0
. width
и height
тега <img>
, здесь в вашем случае это будет width="1200"
& amp; [1 124]. Таким образом, по сути, начальная загрузка не имеет ничего общего с этой проблемой, это просто поток разметки и свойств CSS.
Примечание:
Надеюсь, что описанные выше шаги помогли вам решить проблему или понять ее. Я бы предложил всегда иметь атрибуты width
и height
для тега <img>
, чтобы браузеры (старые) знали, как сделать этот конкретный размер блока на странице.
.dnow-regionsContent .overlay-div {
height: 100%;
width: 100%;
position: absolute;
background-color: #000;
opacity: 0.3;
/*Added*/
top:0;
left:0;
}
.dnow-regionsContent img {
max-height: 40rem;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>slick slider</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
crossorigin="anonymous">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<section class="dnow-regionsWrap">
<div class="dnow-regionsContent">
<div class="card bg-dark text-white">
<img src="https://www.dropbox.com/s/9fvw247x7ml90mf/canadaN.jpg?dl=1" width="1200" height="800" alt="">
<div class="overlay-div"></div>
<div class="card-img-overlay d-flex align-items-center container">
<div class="row mb-5 w-100">
<div class=" col-sm-12 text-content">
<h2 class="card-title ">
Canada
</h2>
<p class="">
Viewl all Location Viewl all Location
</p>
</div>
</div>
</div>
</div>
</div>
</section>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
crossorigin="anonymous"></script>
</body>
</html>
Это был не ты, это был IE.
Надеюсь, это поможет вам!
Можно добраться до него, но это не легко. Вы могли бы хотеть сделать что-то как ниже при запуске и сохранить статический кэш значений. Существует много особых случаев для контакта с (наследование, и т.д.), но оно должно работать на простые отображения отдельного столбца. Я, возможно, не учел некоторый instanceof и пустые проверки.
for (Iterator iter=configuration.getClassMappings(); iter.hasNext();) {
PersistentClass persistentClass = (PersistentClass)iter.next();
for (Iterator iter2=persistentClass.getPropertyIterator(); iter2.hasNext();) {
Property property = (Property)iter2.next();
String class = persistentClass.getClassName();
String attribute = property.getName();
int length = ((Column)property.getColumnIterator().next()).getLength();
}
}
На основе ответа Brian это - то, что я закончил тем, что делал.
private static final Configuration configuration = new Configuration().configure();
public static int getColumnLength(String className, String propertyName) {
PersistentClass persistentClass = configuration.getClassMapping(className);
Property property = persistentClass.getProperty(propertyName);
int length = ((Column) property.getColumnIterator().next()).getLength();
return length;
}
Это, кажется, работает хорошо. Надежда это полезно любому, кто натыкается на этот вопрос.
Иногда может возникнуть проблема с получением объекта конфигурации (если вы используете некоторую платформу приложения и не создаете фабрику сеансов самостоятельно с помощью конфигурации).
Если вы используете для Например, Spring, вы можете использовать LocalSessionFactoryBean (из вашего applicationContext) для получения объекта Configuration. Тогда получение длины столбца - это просто кусок пирога;)
factoryBean.getConfiguration().getClassMapping(String entityName) .getTable().getColumn(Column col).getLength()
Однако, когда я пытаюсь получить доступ к LocalSessionFactoryBean
, я беру исключение приведения класса
LocalSessionFactoryBean factoryBean = (LocalSessionFactoryBean) WebHelper.instance().getBean("sessionFactory");
исключение:
org.hibernate.impl.SessionFactoryImpl cannot be cast to org.springframework.orm.hibernate3.LocalSessionFactoryBean
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean>
Это кажется хитрым ....
РЕДАКТИРОВАТЬ: нашел ответ. Вам нужно использовать амперсанд перед строкой имени компонента
LocalSessionFactoryBean factoryBean = (LocalSessionFactoryBean) WebHelper.instance().getBean("&sessionFactory");