如何在按钮单击时更改地图元素的高度?

Posted

技术标签:

【中文标题】如何在按钮单击时更改地图元素的高度?【英文标题】:How to change height of the map element on button click? 【发布时间】:2019-08-30 20:48:53 【问题描述】:

我想在单击按钮时来回删除样式,但是当我现在尝试调整大小时,地图正在整个屏幕上渲染,但没有任何背景,只有上面的标记。

所以基本上我想删除样式并隐藏列表元素,并且只在一次单击时显示地图元素,然后在下一次单击时再次显示列表并调整地图最初的大小。

有什么想法吗?

**Updated**

  **aura component** 

<aura:component >
<aura:attribute name="map" type="Object"/>
<aura:attribute name="buttonstate" type="Boolean" default="false"/>

<div aura:id= "screen">        
 <div id="map" aura:id="mapSize" class="mapSize" style="position:relative;">   
        <lightning:button class="button" aura:id="buttonList" label="Button" onclick="!c.handleClick" />
 </div>
</div>
   <div  aura:id="listDiv" class ="listDiv">
   <c:List  />
    </div>        
  </div>       
</aura:component>

**CSS**

   .cAccountMap .mapSize
   width: 100%;
   height: 80%; 


.cAccountMap .mapTestSize
    height: 100%;



.THIS .listDiv
 height: 20%;




**javascript** 

   handleClick : function(component,event,helper)
      var buttonName = event.getSource();
      var elements = document.getElementsByClassName("listDiv");
     var buttonstate = component.get('v.buttonstate');
    var cmpTarget = component.find('mapSize');
    if(buttonstate==false)
        buttonName.set('v.label', 'LALA');
        elements[0].style.display = 'none';
        $A.util.removeClass(cmpTarget, 'mapSize');
        $A.util.addClass(cmpTarget, 'mapTestSize');      
    else
        buttonName.set('v.label', 'gogo');
        elements[0].style.display = '';
        $A.util.addClass(cmpTarget, 'mapSize');

        $A.util.removeClass(cmpTarget, 'mapTestSize');  
    
    component.set('v.buttonstate', !buttonstate);


【问题讨论】:

我在你的 CSS 中看到了 .This.THIS。这是什么? 抱歉让你困惑了,我更新了。 你能分享你的完整代码,包括.buttonstate按钮吗?谢谢 @HassanSiddiqui 我添加了我设法使其工作的代码,但现在地图在屏幕上没有背景,基本上只显示地图上没有背景的标记。我也检查了,由于某种原因,salesforce 移动应用程序不再显示地图,只有灰色。谢谢 您是否在任何服务器或任何工作示例上部署了您的代码?请分享链接。谢谢 【参考方案1】:
After multiple tries  i managed to find the solution 
aura component is the same

css 
.cAccountMap .mapSize
  width: 100%;
  height: 65%; 


.THIS .listDiv
 height: 35%;


.THIS .listHideDiv
 height: 0%;

Javascript

 handleClick : function(component,event,helper)
    var changeViewButton = event.getSource();
    var listDiv = document.getElementsByClassName("listDiv");
    var mapDiv = document.getElementsByClassName("mapSize");
    var buttonstate = component.get('v.buttonstate');
    var cmpList = component.find('listDiv');

    if(buttonstate==false)
        changeViewButton.set('v.label', 'lala');
        listDiv[0].style.display = 'none';
        mapDiv[0].style.height = '100%';
        $A.util.addClass(cmpList, 'listHideDiv');
    else
        changeViewButton.set('v.label', 'gogo');
        $A.util.removeClass(cmpList, 'listHideDiv');
        listDiv[0].style.display = '';
        mapDiv[0].style.height = '65%';
    
    component.set('v.buttonstate', !buttonstate);


所以基本上地图高度样式是从javascript改变的

【讨论】:

以上是关于如何在按钮单击时更改地图元素的高度?的主要内容,如果未能解决你的问题,请参考以下文章

UITableView:单击按钮时如何动态更改单元格高度?

UITableView:单击按钮时如何动态更改单元格高度?迅速

当我单击“更多”按钮时如何将 div 高度属性更改为自动

C# Wpf 如何使用其中的按钮更改 Listviewitem 的高度?

在 iframe 内单击按钮时,如何增加 iframe 的高度?

如何通过单击按钮更改 Google 地图中心