Подтвердить что ты не робот

Использование Bootstrap для Angular и дизайна материалов для Angular вместе

Я работаю над проектом с этим .

Шаблон написан с использованием AngularJs и Bootstrap-UI (bootstrap для angular), и я хотел бы включить некоторые элементы Material Design, такие как карты и другие.

Можно ли это сделать? это рекомендуется? Я считаю, что мы уже любим этот шаблон и способ для многих его элементов, но у Material Design есть карты, выпадающие меню, текстовые входы с анимацией ярлыков и т.д., Например, которые потрясающе.

Итак, мой вопрос:

AngularJS + Bootstrap для Angular + Конструкция материала для Angular= Awessomeness или Disaster?

4b9b3361

Ответ 1

Если вы добавите как бутстрап, так и angular -материал, это то, что произойдет

  • Оба имеют css, которые будут нацелены на ваши элементы переднего конца (например, входные данные
    элемент, кнопки)

  • У каждого свой вид и внешний вид (т.е. элемент ввода Bootstrap отличается от элемента ввода материала). Таким образом, ваш общий проект не будет иметь ни единого взгляда.

  • Если вы добавите оба, вам придется позаботиться о стилях css, переопределяющих другие на общих частях (например, размер шрифта и семейство шрифтов).

  • Angular -материал обрабатывает передние элементы в angular способе (директиве) Поэтому, выпуская новую версию (до 29 выпусков), вам придется потратить некоторое время на тестирование своего более раннего кода (например, сменив $media на $mdMedia для обработки sideMenu). Я потратил много времени на то, чтобы выяснить, почему мой sideMenu перестает работать!

  • Общий размер зависимостей проекта будет увеличен, если вы используете две интерфейсные рамки.

    Angular -материал нуждается в собственных зависимостях, таких как angular -animate '& angular -aria.

Говоря о ваших "md-картах", есть "панели" в начальной загрузке, вы можете посмотреть здесь

Я бы порекомендовал вам придерживаться одной или самой загрузки или angular -материала. Оба являются удивительными, просто не смешивайте их.

Ответ 2

Я просто недавно написал сообщение в блоге о том, как заменить Bootstrap с Angular -материалом. Он основан на используемой мной платформе kickstarter, но я буду выполнять эту работу.

Похоже, что @nitin сказал, будет сложно реализовать оба. То, о чем я на самом деле просил вас подумать, независимо от того, возможно ли это, почему вы хотите, чтобы оба?

Цель обоих состоит в том, чтобы обеспечить общий общий стиль пользовательского интерфейса, но они концептуально связаны друг с другом, а не с тем, что может работать в тандеме.

Я бы посоветовал вам начать читать больше о материальном дизайне из руководства Google, прежде чем прыгать прямо.

Ответ 3

Я написал Angular Загрузочный материал, который является версией Тема дизайна материала Bootstrap. Это устраняет зависимость от jQuery и загрузочного JavaScript. И поддерживает проверку формы с помощью ng-messages.

Вы можете установить из беседки через bower install abm.

Поскольку вы уже используете UI Bootstrap, единственной дополнительной зависимостью будет тема для создания темы bootstrap css и Angular Сообщения


Ниже приведена базовая демонстрация проверки формы:

angular.module('angularBootstrapMaterialDocs', ['angularBootstrapMaterial', 'ui.bootstrap']);
angular.module('angularBootstrapMaterialDocs')
  .controller('validationDemoCtrl', ['$scope',
    function($scope) {
      $scope.user = {
        name: "",
        notifications: {}
      }
      $scope.errorMap = {
        required: "This field is mandatory",
        email: "Please enter a valid email"
      }
      $scope.change = function() {
        console.log($scope);
      }
    }
  ]);
.container-fluid {
  background-color: #fff;
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700" rel="stylesheet" />
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/0.5.9/css/bootstrap-material-design.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/0.5.9/css/ripples.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.3/angular.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.3/angular-messages.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/1.3.2/ui-bootstrap.min.js"></script>
<script src="https://rawgit.com/tilwinjoy/angular-bootstrap-material/master/dist/angular-bootstrap-material.min.js"></script>
<div class="container-fluid" ng-app="angularBootstrapMaterialDocs">
  <div class="row" ng-controller="validationDemoCtrl">
    <div class="col-xs-12 col-sm-6">
      <form name="signup">
        <abm-form-group error-messages="errorMap">
          <label data-abm-label type="floating">Name</label>
          <input type="text" name="name" class="form-control" abm-form-control ng-model="user.name" required>
        </abm-form-group>
        <abm-form-group error-messages="errorMap">
          <label data-abm-label>Email</label>
          <input type="email" name="email" class="form-control" placeholder="[email protected]" abm-form-control ng-model="user.email" required>
        </abm-form-group>
        <div class="form-group">
          <div class="togglebutton" abm-toggle label="Premium Account">
            <input type="checkbox" name="premiumAccount" ng-model="user.premium" ng-change="user.paymentMode=undefined">
          </div>
        </div>
        <abm-form-group error-messages="errorMap">
          <label>Prefered payment method</label>
          <div class="radio" abm-radio label="Net banking">
            <input type="radio" name="payment" value="net" ng-model="user.paymentMode" ng-required="user.premium" ng-disabled="!user.premium">
          </div>
          <div class="radio" abm-radio label="Credit card">
            <input type="radio" name="payment" value="credit" ng-model="user.paymentMode" ng-required="user.premium" ng-disabled="!user.premium">
          </div>
        </abm-form-group>
        <div class="form-group">
          <div class="togglebutton" abm-toggle label="Send Me Updates">
            <input type="checkbox" name="notifications" ng-model="user.notify" ng-change="user.notifications={}">
          </div>
        </div>
        <div class="row">
          <div class="col-xs-6">
            <abm-form-group error-messages="errorMap">
              <label>Notifications via:</label>
              <div class="checkbox" abm-checkbox label="Text Message">
                <input type="checkbox" name="text-notifications" ng-model="user.notifications.text" ng-disabled="!user.notify" ng-required="user.notify && !user.notifications.email">
              </div>
              <div class="checkbox" abm-checkbox label="Email">
                <input type="checkbox" name="email-notifications" ng-model="user.notifications.email" ng-disabled="!user.notify" ng-required="user.notify && !user.notifications.text">
              </div>
            </abm-form-group>
          </div>
          <div class="col-xs-6">
            <abm-form-group error-messages="errorMap">
              <label>Notification Frequency:</label>
              <select class="form-control" name="frequency" abm-form-control ng-model="user.notifications.frequency" ng-disabled="!user.notify" ng-required="user.notify">
                <option>Daily</option>
                <option>Weekly</option>
                <option>Monthly</option>
              </select>
            </abm-form-group>
          </div>
        </div>
        <a href="" class="btn btn-raised btn-primary" ng-disabled="signup.$invalid" abm-component>Create Account</a>
      </form>
    </div>
    <div class="col-xs-12 col-sm-6">
      <pre>{{user | json}}</pre>
    </div>
  </div>
</div>

Ответ 4

Недавно я проанализировал этот вопрос. Существует новая версия Angular, которая составляет Angular 5. Но нелегко найти красивые компоненты для этой версии Angular, выпущенной пару недель назад.

Angular Материал в основном основан на гибкой макете. Вы должны проверить, для вас это ограничение. Если вы используете только входные компоненты и donot интегрируете любую другую фреймворк javascript (например, ng-bootstrap), он должен работать.

Поскольку материальные компоненты не определяют какого-либо изменения какого-либо родного стиля (у него даже нет реализации normalize.css). Если вы проверите тему стилизации материала, например. https://unpkg.com/@angular/material/prebuilt-themes/indigo-pink.css вы не найдете стиль для собственных тегов.

То, на что вы должны обратить внимание, - это не использовать оба стиля в одном элементе, например. следующее не будет работать по желанию

<button mat-raised-button class="btn btn-primary">Submit</button>

Если вы используете материальный компонент, вы должны использовать особый стиль для этого компонента. например

<button mat-raised-button color="primary">Primary</button>