除了所选的 ng-repeat 项目外,如何降低屏幕上其他所有内容的不透明度?

How to lower opacity on everything else on screen except the selected ng-repeat item?

我在 Whosebug 上到处查看,似乎没有其他人解决这个问题,或者我只是使用了错误的措辞或关键字导致我找不到我想要的东西。如果是这种情况并且这是重复的,如果你能 link 我会很高兴这样的情况。谢谢。

我有一个 HTML/CSS、AngularJS、PHP 和 MySQL 项目。
POST 和 GET 请求完美运行。
我正在尝试做的事情与 Google Keep 上已经完成的事情类似。
当用户单击蓝色铅笔时,我希望所选项目的不透明度为 100%,但所有父 div 和兄弟 div 的不透明度值为 0.3 或其他值。

我想尝试 尽可能避免 jQuery
我相信我在某处读到说一起使用一大堆框架是不好的做法,当你使用一个框架时,你应该坚持使用它。

我不知道如何解决这个问题。
我什至不知道从哪里开始。

能否请您也给我提供一个工作示例 JSFiddle 或 Plnkr?

如有任何帮助或建议,我们将不胜感激!
提前致谢!


我想要的


我有什么


HTML

<body ng-app="myApp">
  <font face="Source Sans Pro">

    <div class="left">
      <center>
        <div ng-controller="insertController">
          <h2> What I learned today </h2>
          <form>
            Date <br>
            <input type="text" ng-model="date"><br><br>
            Content <br>
            <textarea rows="10" cols="50" ng-model="content"></textarea><br><br>
            <input type="button" value="Submit" ng-click="insertdata()">
          </form>
        </div>
      </center>
    </div>

    <div class="right">
      <center>
        <div ng-controller="fetchController"><br>
          <span ng-repeat="item in results">
            <div class="card">
              <div class="theText">
                <span class="bold-underline">{{item.date}}</span><br>
                {{item.content}}
              </div>
              <div ng-controller="deleteController">
                <input type="button" class="deleteButton" ng-click="deleteThisItem(item)" value="x">
              </div>
              <div ng-controller="editController">
                <input type="button" class="editButton" ng-click="editThisItem(item)" value="✎">
              </div>
            </div>
            <br><br>
          </span>
        </div>
      </center>
    </div>
  </font>
</body>

编辑
我刚开始工作。



新HTML

<div class="right">
  <center>
    <div ng-controller="fetchController"><br>
      <span ng-repeat="item in results">
          <div ng-controller="fadeController">
            <div class="card" ng-class="cardFade">
              <div class="theText">
                <span class="bold-underline">{{item.date}}</span><br>
                {{item.content}}
              </div><!-- theText -->
              <div ng-controller="deleteController">
                <input type="button" class="deleteButton" ng-click="deleteThisItem(item)" value="x">
              </div><!-- deleteController -->
              <div ng-controller="editController">
                <input type="button" class="editButton" ng-click="editThisItem(item)" value="✎">
              </div><!-- editController -->
            </div><!-- card -->
          </div><!-- fadeController -->
        <br>
      </span><!-- ng-repeat -->
      <div class="overlay"></div>
    </div><!-- fetchController -->
  </center>
</div><!-- right -->

新CSS

.someCSS {
  background-color: white;
  z-index: 200;
  opacity: 1;
}

.noCSS {
}

.overlay {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background: black;
  opacity: 0.6;
  z-index: 100;
  pointer-events: none; /* required to be able to click buttons under overlay */
}

fadeController.js

app.controller("fadeController", function($scope, $http, resultsService) {
  $scope.cardFade = "noCSS";
  $scope.editThisItem = function(item) {
    if($scope.cardFade === "noCSS") {
      $scope.cardFade = "someCSS";
    }
    else if($scope.cardFade === "someCSS") {
      $scope.cardFade = "noCSS";
    }
    else {
      alert("FATAL ERROR!");
    }
  };
});

您可以添加 div 作为叠加层

<div class="overlay"></div>

.overlay {
    backgound-color: gray;
    opacity: 0.5;
    z-index: 100; //<= so the overlay with cover the page
}

接下来您需要像这样添加一个 css class

.someCss {
    z-index: 101; // <=so it would be on top on the overlay
}

当您点击蓝色铅笔时,它将添加到 ng-repeat 元素。

我什至会把 class 变成 ng-class ng-class

所以它会是这样的:

  <span ng-repeat="item in results">
    <div class="card" ng-class="{someCss : item.selected}">
      <div class="theText">
        <span class="bold-underline">{{item.date}}</span><br>
        {{item.content}}
      </div>
      <div ng-controller="deleteController">
        <input type="button" class="deleteButton" ng-click="deleteThisItem(item)" value="x">
      </div>
      <div ng-controller="editController">
        <input type="button" class="editButton" ng-click="editThisItem(item)" value="✎">
      </div>
    </div>
    <br><br>
  </span>

现在在蓝色铅笔上单击您可以添加 属性 selected 或更改它