如何用背景色显示md吐司



我正在尝试创建带有一些背景颜色的md吐司,以使用有角度的材料吐司。我使用了这个SO问题的答案,我创建了这个代码笔,但它也显示了一些不需要的背景。

HTML:

<div ng-controller="AppCtrl" layout-fill="" layout="column" class="inset toastdemoBasicUsage" ng-cloak="" ng-app="MyApp">
  <p>
    Toast is not properly working with theme defined in CSS.
    <br>
  </p>
  <div layout="row" layout-sm="column" layout-align="space-around">
    <md-button ng-click="showSimpleToast()">
      Toast
    </md-button>
  </div>    
</div>

CSS:

md-toast.md-success-toast-theme {
    background-color: green;
}
md-toast.md-error-toast-theme {
    background-color: maroon;
    position: 'top right'
}
md-toast {
    height: 40px;
    width: 50px;
    margin-left: auto;
    margin-right: auto;
    left: 0; right: 0;
    top:10px;
}

JS:

angular.module('MyApp',['ngMaterial', 'ngMessages'])
.controller('AppCtrl', function($scope, $mdToast, $document) {
  $scope.showSimpleToast = function() {
    $mdToast.show(
      $mdToast.simple()
        .textContent('Simple lala Toast!')
      .theme('success-toast')
        .hideDelay(3000)
    );
  };
})

定位吐司

您可以只将md-toast定位在正确的位置,而不是为所有东西指定一个位置(这样可以切割吐司)。

根据文档,有四个位置可以正式放置吐司:左上、右上、左下、右下。因此,首先,让我们将吐司定位到左上(这对动画的更改很重要。此外,这也将允许我们在底部中心上显示吐司)。

$mdToast.show(
  $mdToast.simple()
    .textContent('Simple lala Toast!')
    .position('top')

现在,在css中,只需定位吐司:

md-toast {
  left: calc(50vw - 150px);
}

这将把吐司定位在视口的中心,减去吐司的一半。

您还可以通过javascript单独在底部中心显示祝酒词:

$mdToast.show(
  $mdToast.simple()
    .textContent('Simple lala Toast!')
    .position('bottom')

吐司将在底部居中,并使用正确的动画进行显示。

给烤面包上色

您为吐司的容器着色,而不是为吐司中的实际内容着色。要给吐司上色,可以添加以下css样式:

md-toast.md-success-toast-theme .md-toast-content {
  background-color: green;
}

您可以更改吐司的主题,使其不覆盖默认的吐司样式。此外,更改特定主题的位置可以帮助同时使用两个位置(默认和手动)(通过更改主题)。

md-toast.md-thatkookooguy-toast-theme {
  left: calc(50vw - 150px);
}

这是你的代码笔。

.toastClass(string)在toast元素上设置类

定义css:

.md-toast-done .md-toast-content{
    background: #004f75 !important;
}
.md-toast-error .md-toast-content{
    background: rgb(193, 30, 23) !important;
}

并定义toast:

    $mdToast.show(
        $mdToast.simple()
            .toastClass('md-toast-error')
            .textContent(stringValue)
            .position('bottom right')
            .hideDelay(3000)
    );

使用时

$mdToast.simple().theme('sometheme');

控制台中出现一个警告,说明尚未定义指定的主题。最好使用toast类属性。

var message = "An error occured!";
$mdToast.show($mdToast.simple({
  hideDelay: 126000,
  position: 'top right',
  content: message,
  toastClass: 'error'
}));

scs:

$red: rgb(244, 67, 54);
$green: rgb(76, 175, 80);
md-toast {
  &.error {
    .md-toast-content {
      background: $red;
      color: white;
    }
  }
  &.success {
    .md-toast-content {
      background: $green;
      color: white;
    }
  }
}

工作示例Codepen