Bootstrap 4 IE не принимает col-sm-12 на карточке

import subprocess, optparse, os, sys, re, datetime, threading, time, glob, shutil, xml.dom.minidom, traceback

class OutputManager:
    def __init__(self, filename, mode, console, logonly):
        self.con = console
        self.logtoconsole = True
        self.logtofile = False

        if filename:
            try:
                self.f = open(filename, mode)
                self.logtofile = True
                if logonly == True:
                    self.logtoconsole = False
            except IOError:
                print (sys.exc_value)
                print ("Switching to console only output...\n")
                self.logtofile = False
                self.logtoconsole = True

    def write(self, data):
        if self.logtoconsole == True:
            self.con.write(data)
        if self.logtofile == True:
            self.f.write(data)
        sys.stdout.flush()

def getTimeString():
        return time.strftime("%Y-%m-%d", time.gmtime())

def runCommand(command):
    '''
    Execute a command in new thread and return the
    stdout and stderr content of it.
    '''
    try:
        Output = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True).communicate()[0]
    except Exception as e:
        print ("runCommand failed :%s" % (command))
        print (str(e))
        sys.stdout.flush()
        return None
    return Output

def GetOs():
    Os = ""
    if sys.platform.startswith('win32'):
        Os = "win"
    elif sys.platform.startswith('linux'):
        Os = "linux"
    elif sys.platform.startswith('darwin'):
        Os = "mac"
    return Os


def check_output(*popenargs, **kwargs):
    try:
        if 'stdout' in kwargs: 
            raise ValueError('stdout argument not allowed, it will be overridden.') 

        # Get start time.
        startTime = datetime.datetime.now()
        timeoutValue=3600

        cmd = popenargs[0]

        if sys.platform.startswith('win32'):
            process = subprocess.Popen( cmd, stdout=subprocess.PIPE, shell=True) 
        elif sys.platform.startswith('linux'):
            process = subprocess.Popen( cmd , stdout=subprocess.PIPE, shell=True ) 
        elif sys.platform.startswith('darwin'):
            process = subprocess.Popen( cmd , stdout=subprocess.PIPE, shell=True ) 

        stdoutdata, stderrdata = process.communicate( timeout = timeoutValue )
        retcode = process.poll()

        ####################################
        # Catch crash error and log it.
        ####################################
        OutputHandle = None
        try:
            if retcode >= 1:
                OutputHandle = OutputManager( 'CrashJob_' + getTimeString() + '.txt', 'a+', sys.stdout, False)
                OutputHandle.write( cmd )
                print (stdoutdata)
                print (stderrdata)
                sys.stdout.flush()
        except Exception as e:
            print (str(e))

    except subprocess.TimeoutExpired:
            ####################################
            # Catch time out error and log it.
            ####################################
            Os = GetOs()
            if Os == 'win':
                killCmd = "taskkill /FI \"IMAGENAME eq {0}\" /T /F"
            elif Os == 'linux':
                killCmd = "pkill {0)"
            elif Os == 'mac':
                # Linux, Mac OS
                killCmd = "killall -KILL {0}"

            runCommand(killCmd.format("java"))
            runCommand(killCmd.format("YouApp"))

            OutputHandle = None
            try:
                OutputHandle = OutputManager( 'KillJob_' + getTimeString() + '.txt', 'a+', sys.stdout, False)
                OutputHandle.write( cmd )
            except Exception as e:
                print (str(e))
    except Exception as e:
            for frame in traceback.extract_tb(sys.exc_info()[2]):
                        fname,lineno,fn,text = frame
                        print "Error in %s on line %d" % (fname, lineno)
1
задан jsPlayer 15 January 2019 в 22:03
поделиться

2 ответа

У меня нет возможности протестировать IE.

Но я воспользовался вашим примером и перенес его в основу Bootstrap 4 .

Я изменил ваши CSS и HTML, чтобы использовать :before для наложения изображения на ваш черный непрозрачный стиль. Я применяю это к .card-img-overlay, и любые дочерние элементы естественным образом появятся над псевдостилем :before.

HTML

<div class="card bg-dark text-white">
  <img src="https://www.dropbox.com/s/9fvw247x7ml90mf/canadaN.jpg?dl=1" class="card-img" alt="...">
  <div class="card-img-overlay">
    <div class="container h-100">
      <div class="row h-100">
        <div class="col align-self-center">
          <h5 class="card-title">Card title</h5>
          <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
          <p class="card-text">Last updated 3 mins ago</p>
        </div>
      </div>  
    </div>  
  </div>
</div>

SASS / CSS

.card-img-overlay {
  overflow: hidden;

  &:before {
    content: '';
    position: absolute;
    top: 0; right: 0; bottom: 0; left: 0;
    background-color: #000;
    opacity: 0.3;
  }

}

Попробуйте эту скрипку в IE ... https: //jsfiddle.net/joshmoto/xm4ude0L/

Если это по-прежнему не работает в IE, то вам придется пройтись по старой школе и найти обходной путь. Если бы это был я, я бы вывел класс тела браузера и управлял проблемой для пользователей IE, используя css. Вы не упомянули, как вы генерируете свой html, поэтому я не могу посоветовать вам функцию класса тела браузера.

Или просто воспользуйтесь браузером, довольным , чтобы продвигать лучшие способы просмотра веб-страниц, чтобы заставить посетителей посещать свои игры и идти в ногу со временем:)

0
ответ дан joshmoto 15 January 2019 в 22:03
поделиться

Фактическая причина:

Это не col-sm-12 , а d-flex на card-img-overlay, который делает ваш дизайн выглядят не правильно в IE.

Почему?

Когда display:flex применяется к элементу, непосредственному дочернему элементу (т. Е. Гибким элементам) потребуется определенная ширина или иначе они не будут расширяться или занимать достаточно места, как нам требуется, если только контента недостаточно.

В вашем случае у нас есть d-flex вдоль card-img-overlay, поэтому непосредственный дочерний элемент (т.е. элемент flex) этого .row не будет иметь ширину 100%. Теперь для столбца col-sm-12, 100% будет полным горизонтальным пространством с его родителем (.row), которое само по себе недостаточно широко. Это реальная проблема здесь.

Решение:

  1. Дайте 100% ширину .row, вы можете использовать класс Bootstrap 4 w-100.
    • Это могло бы быть реальным решением вашей проблемы / запроса, но для того, чтобы получить желаемый вид, все еще требуется немного, как в других браузерах.
  2. Предоставление position: absolute не работает в одиночку, умные браузеры будут знать, что делать, но другие будут нуждаться в значениях смещения, таких как top & amp; left. В вашем случае со значением как 0.
  3. Наконец, изображение с фактическими размерами атрибутов 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.

Надеюсь, это поможет вам!

0
ответ дан divy3993 15 January 2019 в 22:03
поделиться