【问题标题】:Specific Bootstrap Modal to change modal-backdrop colour/opacity特定的 Bootstrap 模态以更改模态背景颜色/不透明度
【发布时间】:2016-12-15 23:22:09
【问题描述】:

我有一个问题,我无法编辑特定模态的样式,但只能使用下面的 css 编辑所有模态:

.modal-backdrop {background:red;}

但是我能做些什么来只改变第二个模态的样式,而不是所有的模态?

Codepen:http://codepen.io/rae0724/pen/woQpqv

【问题讨论】:

  • 使用同级选择器,例如:.modal2.in ~ .modal-backdrop { background:red; }.modal2[style='display: block;'] ~ .modal-backdrop { background:red; }

标签: css twitter-bootstrap modal-dialog bootstrap-modal


【解决方案1】:

你可以使用 jQuery & Bootstrap's Modal Events:

  • show.bs.modal - 模态打开时触发。
  • hidden.bs.modal - 模态完全关闭时触发。

使用这个你做一个10ms延迟并改变backdropbackground-color。喜欢:

// Triggers as soon as 'modal1' Opens
$('.modal1').on('show.bs.modal', function() {
  setTimeout(function() {
    $('.modal-backdrop').css('background', 'red');
  }, 10);
});

// Triggers as soon as 'modal1' is closed
$('.modal1').on('hidden.bs.modal', function() {
  $('.modal-backdrop').css('background', '');
});


// Triggers as soon as 'modal2' Opens
$('.modal2').on('show.bs.modal', function() {
  setTimeout(function() {
    $('.modal-backdrop').css('background', 'blue');
  }, 10);
});

// Triggers as soon as 'modal2' is closed
$('.modal2').on('hidden.bs.modal', function() {
  $('.modal-backdrop').css('background', '');
});

看看下面的工作 sn-p:

$('.modal1').on('show.bs.modal', function() {
  setTimeout(function() {
    $('.modal-backdrop').css('background', 'red');
  }, 10);
});

$('.modal1').on('hidden.bs.modal', function() {
  $('.modal-backdrop').css('background', '');
});

$('.modal2').on('show.bs.modal', function() {
  setTimeout(function() {
    $('.modal-backdrop').css('background', 'blue');
  }, 10);
});

$('.modal2').on('hidden.bs.modal', function() {
  $('.modal-backdrop').css('background', '');
});
.wrap { padding: 15px; }
h1 { font-size: 28px; }
h4,
modal-title { font-size: 18px; font-weight: bold; }

.no-borders { border: 0px; }
.body-message { font-size: 18px; }
.centered { text-align: center; }
.btn-primary { background-color: #2086c1; border-color: transparent; outline: none; border-radius: 8px; font-size: 15px; padding: 10px 25px; }
.btn-primary:hover { background-color: #2086c1; border-color: transparent; }
.btn-primary:focus { outline: none; }
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"/>


<div class="wrap">
  <h1>Bootstrap Modal Example</h1>
  <button type="button" class="btn btn-primary" data-toggle="modal" data-target=".modal1">
    Modal 1
  </button>
</div>

<div class="modal fade modal1" tabindex="-1" role="dialog" aria-labelledby="modal1" aria-hidden="true">
  
  <div class="modal-dialog modal-lg">
    
    <!-- Modal Content: begins -->
    <div class="modal-content">
      
      <!-- Modal Header -->
      <div class="modal-header no-borders">
          <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
          <h4 class="modal-title" id="gridSystemModalLabel"></h4>
      </div>
    
      <!-- Modal Body -->  
      <div class="modal-body">
        <p class="body-message centered"><strong>Modal 1 here.</strong></p>
      </div>
   
    </div>
    <!-- Modal Content: ends -->
    
  </div>
  
</div>

<!---------------------->
<div class="wrap">
  <h1>Bootstrap Modal Example</h1>
  <button type="button" class="btn btn-primary" data-toggle="modal" data-target=".modal2">
    Modal 2
  </button>
</div>
 
<div class="modal fade modal2" tabindex="-1" role="dialog" aria-labelledby="modal2" aria-hidden="true">
  
  <div class="modal-dialog modal-lg">
    
    <!-- Modal Content: begins -->
    <div class="modal-content">
 
      <!-- Modal Body -->  
      <div class="modal-body">
        <div class="body-message">
          <h4>Modal 2 here.</h4>
          <p>How to change this background colour?</p>
        </div>
      </div>
    
    </div>
    <!-- Modal Content: ends -->
    
  </div>
  
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    以下解决方案是您要求的补丁。和我想出的最好的东西。我刚刚在您的代码中添加了 java 脚本。我一个字都没改变你的代码。

    $(".modal1").on('shown.bs.modal', function() {
      $('.modal-backdrop').css('background', 'red');
    });
    
    $(".modal1").on('hidden.bs.modal', function() {
      $('.modal-backdrop').css('background', '#000');
    });
    .wrap {
      padding: 15px;
    }
    h1 {
      font-size: 28px;
    }
    h4,
    modal-title {
      font-size: 18px;
      font-weight: bold;
    }
    .no-borders {
      border: 0px;
    }
    .body-message {
      font-size: 18px;
    }
    .centered {
      text-align: center;
    }
    .btn-primary {
      background-color: #2086c1;
      border-color: transparent;
      outline: none;
      border-radius: 8px;
      font-size: 15px;
      padding: 10px 25px;
    }
    .btn-primary:hover {
      background-color: #2086c1;
      border-color: transparent;
    }
    .btn-primary:focus {
      outline: none;
    }
    .model1 .modal-backdrop {
      background: red;
    }
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    
    <div class="wrap">
      <h1>Bootstrap Modal Example</h1>
      <button type="button" class="btn btn-primary" data-toggle="modal" data-target=".modal1">
        Modal 1
      </button>
    </div>
    
    <div class="modal fade modal1" tabindex="-1" role="dialog" aria-labelledby="modal1" aria-hidden="true">
    
      <div class="modal-dialog modal-lg">
    
        <!-- Modal Content: begins -->
        <div class="modal-content">
    
          <!-- Modal Header -->
          <div class="modal-header no-borders">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span>
            </button>
            <h4 class="modal-title" id="gridSystemModalLabel"></h4>
          </div>
    
          <!-- Modal Body -->
          <div class="modal-body">
            <p class="body-message centered"><strong>Modal 1 here.</strong>
            </p>
          </div>
    
        </div>
        <!-- Modal Content: ends -->
    
      </div>
    
    </div>
    
    <!---------------------->
    <div class="wrap">
      <h1>Bootstrap Modal Example</h1>
      <button type="button" class="btn btn-primary" data-toggle="modal" data-target=".modal2">
        Modal 2
      </button>
    </div>
    
    <div class="modal fade modal2" tabindex="-1" role="dialog" aria-labelledby="modal2" aria-hidden="true">
    
      <div class="modal-dialog modal-lg">
    
        <!-- Modal Content: begins -->
        <div class="modal-content">
    
          <!-- Modal Body -->
          <div class="modal-body">
            <div class="body-message">
              <h4>Modal 2 here.</h4>
              <p>How to change this background colour?</p>
            </div>
          </div>
    
        </div>
        <!-- Modal Content: ends -->
    
      </div>
    
    </div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-16
      • 2022-08-17
      • 2018-03-03
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 2017-05-01
      相关资源
      最近更新 更多