2017-09-27 70 views
0

我正在使用Accordion折叠引导组件在页面中显示两个折叠项目。第一个折叠项目默认折叠,第二个折叠项目中有一个显示PDF文档的iframe。我需要第二个可折叠项目来适应屏幕的左侧高度。我试图用弹性盒来实现它,但似乎崩溃事件和弹出框有问题。我将不胜感激任何帮助。强制Iframe放入折叠引导组件以适合屏幕

这是我的小提琴例如:

Example

下图描述了不希望的行为:
enter image description here

<vp-leftpanel> 
    <div class="panel-group" id="accordion" role="tablist" aria- 
     multiselectable="true"> 
     <div class="panel panel-default"> 
    <div class="panel-heading" role="tab" id="headingOne"> 
     <h4 class="panel-title"> 
      <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne"> 
       {{panelHeadingData}} 
      </a> 
     </h4> 
    </div> 
    <div id="collapseOne" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne"> 
     <div class="panel-body"> 
      <div *ngIf="candidate.hasEmailSourceData"> 

       ..... 

      </div>     
     </div> 
    </div> 
</div> 
<div class="panel panel-default"> 
    <div class="panel-heading" role="tab" id="headingTwo"> 
     <div class="panel-title"> 
      <div class="row"> 
       <div class="col-md-6"> 
        <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo"> 
         {{panelHeadingResume}} 
        </a> 
       </div> 
       <div class="col-md-6"> 
        <select class="form-control" (change)='loadDocument($event.target.value)'> 
         <option [value]="d.id" *ngFor="let d of candidate.candidateDocuments">{{d.friendlyName}}</option> 
        </select> 
       </div> 
      </div> 

     </div> 
    </div> 
    <div id="collapseTwo" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingTwo"> 
     <div class="panel-body"> 
      <div *ngIf="candidate.candidateDocuments.length > 0" class="apply-flex"> 
       <iframe [src]="documentSelectedPathSafe" type="application/pdf" ></iframe> 
      </div> 
     </div> 
    </div> 
</div> 
    </div> 
    </vp-leftpanel> 
+0

其实,你的问题并不清楚你的需求是什么。我尝试过,并且非常好地工作你面临什么问题 –

+0

@GajendraSingh你的意思是工作绝对好。你能分享一下你尝试过的吗? –

回答

-1

只是max-height: 200px;更换CSS height=100%

+0

嗨!如果您在堆栈溢出中为将来的工作签出[回答问题格式](https://stackoverflow.com/help/how-to-answer)会更好。 - 谢谢 – Momin

+0

不幸的是,解决方案似乎比这更复杂。 –

+1

这不提供问题的答案。一旦你有足够的[声誉](https://stackoverflow.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/评论/低质量帖/ 17456566) – clemens

1

为了使Flexbox具有一定的复杂性,

在这种fiddle demo我创建/应用下面的类来完成它,完全动态的,认为这将打破手风琴的显示/隐藏

.fullvh { 
    height: 100vh; 
} 
.flex-box-col { 
    display: flex; 
    flex-direction: column; 
} 
.flex-grow { 
    flex-grow: 1; 
} 
.pos-relative { 
    position: relative; 
} 
/* as it didn't work adding "flex-box-col flex-grow" to this 
    elements class, I added it using its ID #collapseTwo */ 
#collapseTwo {   
    display: flex; 
    flex-direction: column; 
    flex-grow: 1; 
} 
.pos-absolute { 
    position: absolute; 
    height: 100%; 
    width: 100%; 
} 

的替代,在这个fiddle demo,不会打破手风琴,而不是给iframe一个高度结合视口单位vh和CSS calc()。即使固定高度160px在某种程度上是已知的,它仍然不如以前的样本动态。

#collapseTwo iframe { 
    height: calc(100vh - 160px); 
    width: 100%; 
} 

另外,一个可在第一样品中的修复脚本,或者在第二添加计算的脚本,以获得精确的高度,或交换自举4,其是基于Flexbox的。

交换到引导程序4可能无法解决问题,因此在开始迁移之前应对其进行彻底测试。

+1

感谢您的解决方案,真的很感激它。第一个肯定不适用于我需要的环境。第二个是一个很好的选择,但我仍然不满意固定的高度。我会等待看看是否有人提出另一个潜在的解决方案。现在我已经表决了你的答案。 –

+0

@D。B我已经介绍了3种可能的方式来做到这一点,而最好的两种选择是,恕我直言,扩大脚本实际检测和设置高度,或使用Boostrap 4,这仍然可能需要一些调整。 – LGSon

+0

@ D.B我已经介绍了可用的选项,以便尽可能接近使用CSS单独完成的工作。你觉得这个也够被接受吗? – LGSon