Смил это: Стандартизированный многофакторный методисследования личности СМИЛ (модифицированный тест MMPI)Интерпретация

Содержание

Стандартизированный многофакторный методисследования личности СМИЛ (модифицированный тест MMPI)Интерпретация

  • Повышенная 0-я шкала (шкала “интроверсии”) усугубляет гипостенические проявления и ослабляет (делает менее явными, заметными) стенические черты.
  • Она выявляет пассивность личностной позиции и большую обращенность интересов в мир внутренних переживаний (чем вовне) как константное свойство личности (т.е. интровертированность) при повышенных и высоких показателях 0-й шкалы в профиле нормы.
  • Повышение 0-я шкалы отражает снижение уровня включенности в социальную среду, выявляет известную замкнутость, застенчивость. 0-я шкала реагирует некоторым повышением (на 5-7 Т) при переживании человеком трудностей в налаживании отношений в связи с процессом вживания в новую микрогруппу или в связи с серьезным межличностным конфликтом.
  • При выраженной акцентуации по типу интровертированной личности высокая (65-70 Т) 0-я шкала отражает инертность в принятии решений, скрытность, избирательность в контактах, стремление к избеганию конфликтов ценою значительного сужения сферы межличностных контактов.
  • В ситуации стресса – заторможенность, уход от контактов, бегство от проблем в одиночество (эскейп). Высокие показатели отражают не только замкнутость, неразговорчивость, но нередко являются признаком внутренней дисгармонии и способом сокрытия от окружающих своеобразия своего характера, неловкости в общении. Иногда, на первый взгляд, эти люди могут производить впечатление достаточно общительных, но это им дается ценой значительного напряжения, о котором знают лишь они сами.
  • Если 0-я шкала – единственный пик в профиле, то у женщин это свидетельствует о скромности, приверженности семейным интересам, социальной уступчивости, а у мужчин выявляет типичный юнговский вариант интроверсии, атрибуты которой – инертность психических функций, ригидность установок, субъективизм, раздражительность, замкнутость.

    В сочетании со 2-й, 7-й и 8-й повышение 0-й (65 Т и выше) выявляет ослабление социальных контактов, отгороженность и отчужденность. Высокая 0-я (70 Т и выше), особенно в профиле типа 80′-/9 отражает проблему аутичности. О лицах с высокой 0-й обычно окружающие знают мало, а их стенические черты и своеобразие сглаживаются, делаются менее заметными. Таким образом, качества данной шкалы прямо противоположны свойствам 9-й, которая усиливает характеристики стенического регистра.

    Низкие показатели 0-й шкалы, напротив, демонстрируют не только общительность и отсутствие застенчивости, но и непринужденность в выставлении напоказ своих характерологических особенностей.

    Данные 0-й шкалы ниже 40 Т выявляют неразборчивость в контактах, избыточную общительность, граничащую с назойливостью при высокой 9-й шкале в профиле. Коррекция поведения лиц с высокой 0-й шкалой затруднена из-за их замкнутости, неоткровенности, и возможна лишь в ситуации завоеванного доверия пациента. Со многим соглашаясь и не споря, на деле они мало податливы внешнему воздействию. В роли лидера выступают крайне редко. Выбор профессиональной деятельности выявляется другими показателями профиля, однако при этом должна учитываться их склонность к ограничению контактов.

    Из всех тенденций, выявляемых профилем СМИЛ. 0-я шкала скорее скрывает от посторонних глаз, чем раскрывает индивидуальность человека. Судьбореализация человека типа “0” находится в сильной зависимости от любой другой ведущей тенденции, так как признаки, присущие 0-й шкале в чистом виде характерны лишь для личности, полностью отошедшей от “мирской суеты” отшельника, отказавшегося от каких-либо контактов с окружающим миром. Если это происходит после житейских трагедий и драматического разрыва с обществом, то эскейп так или иначе связан с болезненными переживаниями, которые являются отголоском эмоциональных бурь и проявляются разными показателями профиля СМИЛ, помимо 0-й шкалы. Если же отход от активной социальной жизни первичен, обусловлен изначальным неприятием мира таким, каков он есть, если мир своей собственной души фактически совсем не связан общностью с окружением, то это и есть тип “0”, одинокий путник, не нуждающийся в том, чтобы его одиночество кто-либо с ним захотел разделить. Социальную роль здесь нет смысла описывать, так как это – позиция вне социума. Это – люди, отказавшиеся от реализации собственной судьбы в рамках такого мира, какой он реально существует.

    Такова интерпретация базисных шкал методики СМИЛ. Кроме шкал достоверности и 10 основных существует множество дополнительных шкал. Они создавались разными авторами в соответствии с интересовавшими их проблемами на базе все тех же 566 утверждений- Каждый из авторов использовал этот опросник, сравнивая в процессе статистической обработки данных типичные ответы выбранной эталонной группы с нормативными данными. Таким образом отбиралась группа значимых утверждений, т.е. тех утверждений, ответы на которые достоверно отличались в эталонной группе и в норме.

    Л. Н. Собчик

    Шкала коррекции K методики MMPI, СМИЛ, ММИЛ

    Шкала Коррекции K MMPI (СМИЛ, ММИЛ, СКЛО, МЛО)

    Шкала Коррекции методики MMPI или, точнее, шкала искусной защиты (subtle defensiveness) была разработана. (Meehl and Hathaway, 1946) чтобы выявлять более тонкие виды защитного реагирования обследуемых, чем это позволяет делать шкала лжи L. Шкала К выявляет “ложноположительные” аспекты ответов на утверждения теста, принимая во внимание различные аспекты психологической защиты. При интерпретации MMPI шкала к служит как индикатором невалидности профиля, так и средством коррекции результатов ответов по клиническим шкалам с учетом защитной реакции. Другими словами, высота шкалы К измеряет личностные характеристики, а не чистый конструкт валидности профиля.

    Повышение показателей по шкале К (особенно при Т-баллах выше 70) отражают выраженную оборонительную позицию при прохождении тестирования. Это могут быть обследуемые, которые стремятся представить весьма благоприятное мнение о себе, например те, кто пытается доказать, что они не нуждаются в психологической помощи, либо просто отрицают имеющиеся проблемы, что приводит к повышению показателей по шкале К. Уровень шкала также коррелирует с другими переменными, такими как социальный класс и уровень образования. Люди из высших социальных классов могут получить более высокие оценки К (от 55 до 60 Т-баллов). Следовательно, для групп обследуемых с высоким социально-экономическим статусом вывод о наличии защитной реакции не должен делаться при показателях по шкале К, не превышающих 70 Т-баллов. Другие личностные факторы, такие как самопринятие, независимость, самоуважение и неавторитарные ценности также связаны с умеренным повышением показателей по шкале К.

    Ярко выраженная оборонительная позиция (K более 70 Т-баллов) в ситуациях, требующих откровенности и открытости, например в контексте планирования лечения, могут отражать следующие характеристики: отчужденность, ригидность, нежелание сотрудничать с терапевтом, отрицание проблем и наличие нереалистичной самооценки.

     Таблица 1. Интерпретация показателей K в зависимости от социально-экономического статуса при планировании вмешательства

    T-балльный диапазон K: низкий социальный класс
    30-44 некоторые проблемы, принятие и выражение симптомов, проблемно-ориентированное реагирование
    45-55 ожидаемый нормальный уровень К для данного социально-экономического класса
    56-63 несколько неохотно выражают свои проблемы, занимают несколько оборонительную позицию
    64-69 умеренно выраженная защитная позиция, нежелание обсуждать чувства, отрицание как психологическая защита

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

    Диапазон T-баллов K: средний и высокий социальный класс
    30-44 чрезмерные жалобы, преувеличение симптомов, отсутствие защитных конструкций, попытка привлечь внимание через выражение симптомов
    45-55 некоторое признание симптомов, очевидная готовность обсуждать проблемы
    56-63 ожидаемый нормальны диапазон баллов для этого социально-экономического класса без каких-либо проблем

    64-69 несколько неохотно обсуждают личные проблемы
    70+ защитная позиция, уклончивость, нежелание выражать свои чувства, симптомы, при некотором отрицании симптомов.

     Высокие значения более 65 T- баллов (70 Т-баллов для MMPI, СМИЛ)

    Высокие баллы К ассоциируются с защитной реакцией, эмоциональным сжатием и редукцией симптоматики. В результате терапевту придется оценивать то, что говорят клиенты, корректируя в сторону увеличения все симптомы и жалобы (Caldwell, 2008). Высокие оценки по шкале K могут возникать по ряду причин. Клиенты, которые сознательно защищаться, чтобы “пройти” тест. Однако в других случаях высокий балл по шкале К является отражением более высокого социально-экономического статуса обследуемых. Люди из более богатых слоев общества склонны поддерживать культурную ценность чрезмерного самоконтроля, приверженности высоким социальным стандартам и социально уместности поведения. В некоторых культурах, например в британской, публичное выражение эмоций осуждается и рассматривается как неуместное (Wagstaff & Rowledge, 1995). Умение держать лицо и «жесткая верхняя губа» в стрессовых ситуациях с подавлением бурных эмоциональных реакций считается уместным и желательным. У таких людей высокие показатели по шкале К отражают культуральную склонность к контролю и уравновешенности (Reynolds & Fletcher-Janzen, 2002). В некоторых ситуациях, высокие баллы К могут быть лучше поняты как отражающие личностные переменные, а не защитную реакцию. Люди с высокими показателями по шкале Коррекции, скорее всего, будут уравновешенными, хорошо контролирующими эмоции, способными хорошо справляться со стрессовыми ситуациями.   Для психолога важно определить истинную причину повышения показателей шкалы К.

    Дескрипторы при повышении шкалы К

    Жалобы Мало или вообще никаких жалоб
    Мысли отрицающие проблемы, рациональные, логические
    Эмоции оборонительные, эмоционально зажатые, сдержанные, контролируемые, “жесткая верхняя губа”
    Черты характера и поведение Контролирующий, испытывающий дискомфорт от эмоциональности, конвенциональный, конформный, социально приемлемый, лишенный самосознания

    Сильные стороны Социально адекватная, уверенная в себе, позитивная Я-концепция, устойчивая, сильная способность справляться с эмоциональным стрессом

    Обратная связь для клиента с повышенными показателями по шкале К (T>65)

    Вы человек, которому важно поступать социально приемлемым способом. Вы склонны подходить к жизни с позиции логики и рационального — стараетесь контролировать свои эмоции, чтобы они не выбивали вас из равновесия. Вы подошли к тесту так, чтобы показать себя с лучшей стороны и были осторожны, чтобы не показаться социально неуместным или эмоционально неуравновешенным. Людям может показаться, что вы защищаетесь, потому что вам не нравится выражение сильных эмоций. Вполне вероятно, что вы редко чувствуете, что эмоции захлестывают вас, и вы не можете с ними справиться.

    Пожалуй, люди могут видеть в вас некоторую эмоциональную ограниченность, потому что вы редко выражаете яркие эмоции. Чтобы люди могли сопереживать вам, они должны знать, что вы крайне сдержанный человек и ваше поведение может не отражать всей гаммы переживаемых вами чувств.
    Люди с профилем как у вас, как правило, не тратят много времени на размышления и анализ своих собственных чувств. Они идут по жизни, упорно работая, чтобы избежать неприятных эмоций. Они могут не всегда могут осознавать, что они чувствуют и как их эмоции управляют некоторыми аспектами их поведения. Но в кризисные моменты, когда другие становятся весьма эмоциональными, вы вряд ли потеряете голову. Вы будете выглядеть хладнокровным, спокойным и собранным, так что другим будет трудно понять, что вы чувствуете. Вы, кажется, хорошо справляетесь с эмоционально напряженными ситуациями, редко чувствуя себя выбитым из равновесия.

    Психологическая помощь и терапевтические подводные камни

    Шкала К, если ее правильно интерпретировать, может быть полезным показателем готовности клиента или пациента к терапии или, в некоторых случаях, нерешительности в отношении участия в лечении. В целом, в своих нижних диапазонах — обычно ниже T = 40-45—шкала к отражает открытость к эмоциональному самовыражению. В своих верхних диапазонах, обычно выше клинических шкал и выше 70 T- баллов — такие показатели говорит об отчужденности по отношению к выражению своих проблем и обсуждению эмоций.

    Как правило, люди с высоким уровнем К не поддаются катарсической и инсайт-ориентированной терапии. Это происходит отчасти потому, что они обладают эмоциональном равновесием и контролем, но также и потому, что они могут опасаться избыточной эмоциональности. Терапия с такими людьми может начинаться с когнитивного подхода, способствующего пониманию того, как люди переживают эмоции. Терапевт может помочь этим клиентам понять, как они научились контролировать и подавлять свои эмоции через культурные или усвоенные запреты на эмоциональную экспрессивность. Как только эти клиенты освоятся с обсуждением эмоций, гештальт-техники или ролевые игры могут помочь освободить их эмоции. Иногда занятия импровизацией или уроки актерского мастерства могут помочь им стать более эмоционально выразительными.

    Рекомендации по лечению и самопомощи

    1. Начните с того, что научитесь распознавать свои эмоции. Вы и ваш терапевт можете работать вместе, чтобы определить любые чувства, которые вы можете испытывать во время сеанса терапии. Подумайте о положительном эмоциональном опыте и потратьте некоторое время, чтобы определить, где в вашем теле отражаются испытываемые чувства. Сделайте то же самое для негативного опыта. Понаблюдайте, не препятствуете ли вы эмоциям становиться слишком интенсивными.
    2. Исследуйте любые детские или более поздние переживания, в которых вы чувствовали
    возможность потери эмоционального контроля. Вернитесь в то время и позвольте себе почувствовать эти моменты, чтобы вы могли изучить весь спектр эмоционального выражения.

    3. Помните, что когда вы выражаете свои эмоции, вы нередко делаете это приглушенно, чтобы у других не было необходимости сопереживать вам. Иногда спрашивайте других, как они воспринимают ваши чувства, чтобы не потерять эмоциональный контакт с ними.
    4. По мере того как вы начинаете чувствовать себя более комфортно в отношении способности отреагирования эмоций, возможно занятия актерским мастерством могут помочь вам стать более спонтанными и возможно, даже более творческим.
    5. Повышение адаптивности: познакомьтесь с понятием “эмоционального интеллекта”, который заключается в способности идентифицировать, оценивать и управлять своими
    эмоциями здоровым образом. Существует много хороших книг по саморазвитию, посвященных развитию эмоционального интеллекта, чтобы улучшить вашу личную жизнь и работу.

    Низкие значения шкалы K (менее 45 T-баллов)

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

    Низкие баллы по шкале К в общих случаях указывают на прямоту, невосприимчивость, уязвимость и недостаточный эмоциональный контроль.

    Когда клинические шкалы повышены при понижении шкалы К, это говорит о том, что личностные характеристики, связанные с клиническими шкалами, будут выраженными и устойчивыми. В некоторых случаях низкий балл шкалы Коррекции может указывать на преувеличение проблем и “крик о помощи”, особенно при значительно повышенных клинических шкалах (с Т-баллом 80 или выше). Низкие баллы по шкале K могут отражать дефектную интеграцию личности и плохую адаптацию. Когда клинические шкалы указывают на тяжелое расстройство, низкие баллы по шкале К указывают на трудности совладания, и необходимость поддерживающей терапевтической помощи, без направленности на инсайт, пока клиент не стабилизируется.

    В отсутствии повышения клинических шкалы низкие баллы К отражают не нарушение эмоциональной сферы, а скорее эмоциональную прямоту и отсутствие уважения к деликатным социальным требованиям. Индивидуумы с низкими баллами К, как правило, игнорируют или считают себя выше суждения других об их эмоциональной выразительности.

    Дескрипторы

    Жалобы Подавленность, неуверенность в себе, иногда растерянность, неэффективность, подверженность стрессам, низкая самооценка
    Мысли Неуверенный в себе, самокритичный, неразвитый, испуганный, неорганизованный, пресыщенный или циничный взгляд на других
    Эмоции Боязливый, амбивалентный, подавленный, неуправляемый, отчужденный от других.
    Черты характера и поведение прямые, беззащитные, легко подавляемые, циничные, жалующиеся, импульсивные, требовательные
    Сильные стороны Открытый, честный, откровенный, спонтанный, эмоционально аутентичный

    Образ жизни и семейное происхождение
    Более низкие уровни шкалы Коррекции связаны с более низкими образовательными уровнями и более низким эмоциональным интеллектом. У людей с низкими баллами по шкале К, как правило, избыточные эмоции и стресс, вероятно, вызовут нарушения в эффективности и производительности исполнительного функционирования. В отсутствии каких-либо повышений по клиническим шкалам низкие баллы по шкале К могут демонстрировать открытые, эмоционально спонтанные и раскованные личности. Как правило, чем ниже K, тем более вероятно, что человек чувствует, что он находится во власти эмоциональных состояний.

    Модифицирующие шкалы

    Если клинические шкалы и шкала F находятся ниже 65 (70 для MMPI и СМИЛ) Т-баллов, сниженная шкала Коррекции может отражать эмоциональную непосредственность, граничащую с дерзостью.

    Обратная связь для показателей нормального диапазона (от 45 до 65 (70) Т-баллов)

    Ваши показатели по этой шкале находятся в пределах нормы. Эта оценка отражает, что вы отвечали на вопросы открыто, не пытаясь быть слишком самокритичным. Ваш подход был честным и точным в меру ваших способностей. Скорее всего, вы достаточно самостоятельны и предприимчивы, а также иметь хорошие навыки адаптации и совладания с проблемами. Вы обладаете широким кругом интересов и достаточными личными ресурсами.

    Обратная связь при сниженных показателях шкалы Коррекции

    Важно! Некоторые из этих утверждений обратной связи могут быть использованы для дополнения утверждений обратной связи по клиническим шкалам. Эти утверждения неуместны, если все клинические шкалы MMPI-2 находятся ниже уровня 60 T-баллов (65 Т-баллов для MMPI, СМИЛ).

    Ваш профиль предполагает, что ваши эмоции и чувства хорошо заметны для окружающих. Если вы чувствуете себя расстроенным или счастливым, другие могут легко увидеть это. В то же время, если вы чувствуете злость, гнев или печаль, интенсивность ваших переживаний может быть воспринята другими как чрезмерная или неуместная. Ваши чувства могут подавлять вас и мешать эффективно функционировать. Когда возникает стресс, он может дезорганизовать вас так, что вам будет трудно будет эффективно работать или заниматься привычными вещами. Интенсивность ваших эмоций может даже напугать вас.

    Из-за того, что вы чувствуете себя настолько выбитым из равновесия, вы можете сомневаться в себе и, поэтому, иметь трудности с принятием решений. Вам может быть трудно доверять тому, что вы чувствуете и о чем думаете. Вы склонны сами быть своим собственным строгим критиком, и вы всегда оцениваете себя с очень критической точки зрения.

    Некоторые из ваших мыслей могут напугать вас, и вам будет трудно избавиться от них, даже если вы попытаетесь это сделать. В настоящее время вы можете постоянно находиться на грани, тревожиться и бояться, что произойдет что-то плохое. Людям с вашим профилем трудно контролировать свои мысли и чувства, поэтому они склонны быть прямолинейными в общении и, иногда, грубыми, что иногда может иметь неприятные последствия. То, как вы подошли к тесту, показывает, что вы очень открыты и беззащитны, и готовы говорить о том, что вы чувствуете.

    Психологическая помощь и терапевтические подводные камни

    При наличии повышений по клиническим шкалам низкий балл шкалы Коррекции указывает на необходимость немедленной, конкретной поддержки и укрепления Эго. Рекомендуется использовать техники релаксации и остановки мыслей, чтобы справиться с эмоциональным потрясениями, связанными с повышениями клинических шкал. При наличии серьезного нарушения низкие показатели К могут указывать на коллапс защитных сил Эго, поэтому инсайт-ориентированная терапия противопоказана. В таких случаях необходимо учитывать вероятность угрозы самоубийства и возможность полной дезорганизации даже при незначительном стрессе.

    Рекомендации по терапии и самопомощи

    1. Найдите способы отключать свой ум от постоянных переживаний. Научитесь медитировать, чтобы у вас были моменты, когда вы не чувствуете себя подавленным.
    2. Каждый вечер составляйте список дел, которые вы хотите сделать на следующий день. Когда вы проснетесь, начните работать над своим списком, чтобы почувствовать некоторое чувство выполненного долга. Список поможет вам почувствовать, что вы обладаете контролем над своим мышлением и поведением.
    3. Изучение различных видов релаксации может помочь успокоить ваши автоматические негативные реакции на стрессовые ситуации. Один из видов релаксации, диафрагмальное дыхание оказывает мощное воздействие на вашу физическую реакцию на стресс. Когда вы чувствуете стресс, ваше дыхание становится быстрым и поверхностным, но это упражнение может успокоить автоматическую реакцию вашей нервной системы и уменьшить реактивное мышление и деструктивные эмоции. Поработайте с вашим терапевтом, чтобы изучить диафрагмальное дыхание, практикуйте два раза в день в течение 2 недель, а затем продолжайте практиковать на
    регулярной основе. Подробно о методах физиологического купирования острого стресса читайте в методике «Разгрузка».

    Андрей Демкин

    L — Ложь F — Достоверность K — Коррекция  1 — Ипохондрия 2 — Депрессия 3 — Истерия 4 — Психопатия 6 — Паранойя 7 — Психастения 8 — Шизофрения 9 — Гипомания 0 — Интроверсия

    SMIL — язык анимации SVG

    Анимация в SVG осуществляется средствами языка SMIL. Это язык разметки, рекомендованный W3C для описания мультимедийных презентаций. И тут все гораздо интереснее, чем, допустим, в Canvas или в WebGL (где анимация — покадровая), хотя подход довольно необычный: в SVG каждой отдельной геометрической фигуре можно присвоить свои анимационные инструкции, заставить двигаться. Как и SVG, SMIL является простым подмножеством XML.

    На практике мультипликация реализуется эффектным и довольно необычным образом. Существует класс ответственных за анимацию объектов, помещаемых прямо внутри фигур, которые надо «оживить». Прежде всего это элемент <animate>. Вот как он работает:

    <svg>

    <ellipse cx=»280″ cy=»180″ rx=»180″ ry=»40″

    Style=»stroke:#55ccff; stroke-width:3; fill: #ffcc22;»> <animate attributeType=»XML» attributeName=»ry» from=»25″ to=»100″ dur=»5s»

    RepeatCount=»indefinite» />

    </ellipse>

    </svg>

    Прежде всего выбирается атрибут, который будет изменяться в процессе анимации. Тут у нас это малый радиус эллипса. В теге <animate> мы задаем его тип, затем через s ttributeName указываем имя атрибута и начальное и конечное значения, то есть диапазон, в котором значения атрибута будут меняться.

    Параметром repeatCount задается количество циклов анимации, при значении indefinite оно равно бесконечности.

    Следующий объект занимается изменением цвета:

    <svg>

    <ellipse cx=»280″ cy=»180″ rx=»180″ ry=»80″ style=»stroke:#55ccff; stroke-width:3;»>

    <animateColor

    AttributeName=»fill» from=»red» to=»blue»

    Iur=»10s» repeatCount=2 iegin=»2s» iill=»freeze» />

    <ellipse

    </svg>

    В этом примере атрибут dur задает длительность анимационного цикла, begin устанавливает время старта анимации (есть и атрибут end). fill=»freeze» означает то, что по окончании проигрывания значение атрибута fill останется неизменным.

    Объект animateMotion реализует движение элемента по заданной траектории. Продемонстрируем его работу, заставив перемещаться небольшой шарик:

    <!DOCTYPE html>

    <head>

    <title>SVG Animation</title>

    </head>

    <body>

    <svg>

    <circle cx=”10” cy=”10” r=”10” style=”stroke: #55ccff; stroke-width: 3; fill: #66ff66;”>

    <animateMotion

    Fath=”M20,160 L160,220 L 220,160 L 160,20 Z”

    Dur=”12s”

    Fotate=”auto”

    RepeatCount=”indefinite”

    >

    </circle >

    </svg>

    </body>

    Главный параметр тут path — это путь движения, задаваемый теми же командами, какими мы рисовали ломаную линию. Атрибут rotate указан для автоматического поворота объекта вокруг своей оси при движении (правда, для шарика это не очень важно).

    Объект animateTransform позволяет анимировать SVG-тратефор-мации, которые мы тут подробно не рассматривали, исключительно из желания не превращать главу в полноценный учебник по SVG. Тут ограничимся небольшим примером:

    <svg>

    <ellipse cx=”280” cy=”280” rx=”80” ry=”40”

    Style=”stroke:#55ccff; stroke-width: 3; fill: #ffcc22; ”> <animateColor

    AttributeName=”fill”

    From=”red” to=”green”

    Dur=”5s” repeatCount=”indefinite” />

    <animateTransform attributeName=”transform” fttributeType=”XML” type=”skewY” from=”0” to=”45” begin=”2s” dur=”10s” fill=”freeze”/>

    </ellipse>

    </svg>

    Еще один объект, ответственный за анимацию, — <set> — позволяет изменять анимируемые свойства не плавно, а скачком, но программируемым скачком.

    В примере ниже уже использованный нами эллипс через две секунды после отображения «схлопнется» по горизонтали, но еще через две секунды восстановит свои размеры:

    <svg>

    <ellipse cx=»280″ cy=»180″ rx=»180″ ry=»40″

    Style=»stroke:#55ccff; stroke-width:3; fill: #ffcc22; «> <set attributeName=»rx» to =»2″ begin=»2s» dur=»2s»/> </ellipse>

    </svg>

    Еще одно важное замечание — во всех примерах, здесь приведенных, мы вкладывали объекты, отвечающие за анимацию, внутрь «оживляемых» фигур. Те же действия вполне можно осуществлять, обращаясь к ним по ссылке:

    <svg>

    <ellipse id =»myEllipse» cx=»280″ cy=»180″ rx=»180″ ry=»40″ /> <animate xlink:href=»#myEllipse» attributeType=»XML» attributeName=»ry» from=»25″ to=»100″ dur=»5s»

    RepeatCount=»indefinite» />

    </svg>


    Как показывает статистика, а самое главное практика – IT специальности не утрачивают своей актуальности, и потребность в квалифицированных кадрах лишь растет. Освоить новую профессию самостоятельно под силу не каждому, потому репатриантам и жителям Израиля стоит обратить свое внимание на данную сферу деятельности, и пройти соответствующие курсы, например программирования на Java, Web, Mobile и т.д. www.tel-ran.com . Упомянутые по ссылке курсы проходят в Израиле. После прохождения данных курсов, с вероятностью 70-100%, вы сможете трудоустроиться в данной области. Остается пожелать успехов в освоении и мастерства в применении приобретенных навыков!

    Вам также могут быть интересны следующие статьи:

    Новые нон-фикшн книги февраля 2022

    • Пятый том масштабного исторического проекта Питера Акройда.

    • Питер Акройд — знаменитый писатель, телеведущий, поэт и историк, автор биографий Чосера, Эдгара По, Ньютона, Шекспира, Тернера, Чарли Чаплина и Альфреда Хичкока и историко-топографических книг о Лондоне и Темзе. 

    • Удостоен престижных наград в области литературы, награжден орденом Британской империи. 


    История Англии — это непрерывное движение и череда постоянных изменений. Но всю историю Англии начиная с первобытности пронизывает преемственность, так что главное в ней — не изменения, а постоянство. До сих пор в Англии чувствуется неразрывная связь с прошлым, с традициями и обычаями. До сих пор эта страна сопротивляется изменениям в любом аспекте жизни. Питер Акройд показывает истоки вековой неизменности Англии, ее консерватизма и приверженности прошлому.

    Повествование в этой книге начинается с анализа причин, по которым национальная слава после битвы при Ватерлоо уступила место длительному периоду послевоенной депрессии. Освещаются события времен Георга IV, чьим правительством руководил лорд Ливерпул, решительно настроенный против реформ, и правление Вильгельма IV, прозванного «Король-моряк», чья власть ознаменовалась модернизацией политической системы и отменой рабства. Начало эпохе важнейших инноваций положило восшествие на престол королевы Виктории в возрасте восемнадцати лет. Всю страну охватил технический прогресс, появление среднего класса изменило облик общества, а научные достижения трансформировали старые взгляды Англиканской церкви и способствовали распространению светских идей. Интенсивная индустриализация принесла владельцам фабрик успех и процветание, но рабочие классы по-прежнему страдали в условиях плохого жилья, продолжительного рабочего дня и крайней нищеты. И вместе с тем это было время расцвета литературы: читатели получили возможность наслаждаться творчеством поэтов — Байрона, Шелли и Вордсворта, а также великих романистов XIX века: сестер Бронте, Джордж Элиот, Элизабет Гаскелл, Теккерея и Диккенса, с чьими произведениями стала ассоциироваться викторианская Англия. В политике экспансионизм уже не ограничивался самой Британией: к концу своего правления Виктория стала императрицей Индии, а Британская империя доминировала на большей части земного шара и подтвердила свое право считаться «владычицей морей».

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

    18+

    «Чешское время. Большая история маленькой страны: от святого Вацлава до Вацлава Гавела», Андрей Шарый


    • Известный журналист и писатель Андрей Шарый живет в Чехии более 25 лет. 

    • Андрей Шарый — автор бестселлеров «Австро-Венгрия: Судьба империи», «Дунай: Река империи» и «Балканы: Окраины империй». 

    • Книга проиллюстрирована работами пражского фотохудожника Ольги Баженовой. 


    Новая книга известного писателя Андрея Шарого, автора интеллектуальных бестселлеров о Центральной и Юго-Восточной Европе, посвящена стране, в которой он живет уже четверть века. Чешская Республика находится в центре Старого Света, на границе славянского и германского миров, и это во многом определило ее бурную и богатую историю. Читатели узнают о том, как складывалась, как устроена, как развивается Чехия, и о том, как год за годом, десятилетие за десятилетием, век за веком движется вперед чешское время. Это увлекательное путешествие во времени и пространстве: по ключевым эпизодам чешской истории, по периметру чешских границ, по страницам главных чешских книг и по биографиям знаменитых чехов. Родина Вацлава Гавела и Ярослава Гашека, Карела Готта и Яна Гуса, Яромира Ягра и Карела Чапека многим кажется хорошо знакомой страной и в то же время часто остается совсем неизвестной для них.

    При этом «Чешское время» — и частная история автора, рассказ о поиске ориентации в чужой среде, личный опыт проникновения в незнакомое общество. Это попытка понять, откуда берут истоки чешское свободолюбие и приверженность идеалам гражданского общества, поиски ответов на вопросы о том, как в Чехии формировались традиции неформальной культуры, неподцензурного искусства, особого чувства юмора, почему столь непросто складывались чешско-российские связи, как в отношениях двух народов возникали и рушились стереотипы.

    16+


    • Дональд Маасс представляет интересы сотен писателей и продает больше сотни романов в год, добиваясь шести- и семизначных авансов от ведущих мировых издательств. 

    Какие приемы и техники используют по-настоящему популярные авторы, чтобы постоянно совершенствовать свое письмо и поддерживать убедительность, качество и высокий литературный уровень в каждой следующей книге? Дональд Маасс, президент одного из самых успешных литературных агентств в мире, рассказывает, как создать действительно убедительный, яркий и незабываемый роман — и как делать это снова и снова. Он погружает вас в мир создания и развития сложных персонажей, а также эффектных сюжетных поворотов, ярких сцен и незабываемых диалогов. Книги Дональда Маасса стали культовой классикой среди учебников писательского мастерства и пособий по Creative Writing. Теперь и вы сможете узнать, как написать зажигательный роман и раздуть искры вашей истории в настоящее пламя.

    16+


    • Александр Боксер — специалист по анализу данных с ученой степенью по физике (MIT) и с дипломами по истории науки (Оксфордский университет) и классической филологии (Йельский университет). 

    • Его исследования публиковались в журнале Nature Physics. Его главная страсть — задачи, в которых соединяются древние и современные технологии. 


    Люди — существа, от природы склонные во всем искать паттерны, повторяющиеся закономерности. А астрология – это величайшая во Вселенной игра в поиск и сопоставление закономерностей. В этой свежей и яркой работе специалист по анализу данных Александр Боксер исследует историю астрологии, а также ее естественно-научные и математические основы. Астрология, утверждает он, была самой амбициозной задачей прикладной математики древнего мира, грандиозным предприятием по анализу данных, в которое внесли свой вклад многие блестящие умы, от Птолемея до аль-Кинди и Кеплера. Сегодня гороскопы считаются лженаукой, но когда-то они были самым передовым научным инструментом нашей цивилизации. А. Боксер проверяет их достоверность, используя современные статистические методы, и наглядно демонстрирует, что работа современных дата-аналитиков по своей сути удивительно похожа на работу астрологов былых времен. Критичная, научно скрупулезная и увлекательно написанная, эта книга помещает астрологию в новый контекст, рассматривая ее как гигантский технологический проект, охват ывающий континенты и столетия и во многом предвосхитивший наш сегодняшний мир, управляемый большими данным.

    16+


    • Линда Джейвин — писатель, эссеист, переводчик с китайского. 

    • Долгое время работала журналистом в Китае. Пишет статьи о современной китайской культуре для The Saturday Paper, The Monthly и Australian Foreign Affairs. 

    Китай на протяжении тысячелетий влиял на военные стратегии, торговые отношения, эстетику, философию и кулинарные традиции различных стран по всему миру, при этом китайская история противоречива, как ни одна другая. И при всей противоречивости ей свойственны определенные закономерности, знание которых позволяет составить целостное впечатление о Китае с его безграничным человеческим, культурным и экономическим потенциалом. Желая поделиться своими глубокими знаниями о прошлом и настоящем Китая и своей любовью к этой стране с заинтересованным читателем, Линда Джейвин мастерски собирает замысловатые пазлы китайской истории, иллюстрируя рассказ рисунками, фотографиями, схемами и картами. Автор делает важные обобщения и дает прогнозы относительно того, что ждет Китай в обозримом будущем и как это может отразиться на судьбе всей планеты.

    18+


    • Вацлав Смил — почетный профессор факультета экологии Манитобского университета. Член Королевского общества Канады и член ордена Канады. 

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

    • Читал лекции в университетах Северной Америки, Европы и Восточной Азии, консультировал ряд американских, британских и международных организаций. 


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

    Эта книга, которая так восхитила Билла Гейтса, обобщает самые интересные материалы, которые Смил пишет для журнала IEEE Spectrum — одного из ведущих научно-инженерных изданий мира, и представляет собой актуальное руководство для понимания истинного положения дел на нашей планете. Она затрагивает широкий диапазон тем, касающихся людей, целых народов и стран, энергии и того, как мы ее используем, технических инноваций, а также машин и устройств, определяющих облик современной цивилизации. Насущная и важная, сочетающая статистику и историю, написанная с чувством юмора, эта книга побуждает нас усомниться в том, что мы считали истиной.

    16+


    • Сорелл Амор — фотограф, кинематографист, инфлюэнсер и предприниматель. У ее блога на Youtube более 1 миллиона подписчиков и более 2,5 миллиона просмотров в месяц. 

    • Сорелл сотрудничала со многими СМИ мирового уровня, включая Forbes, Business Insider, Cosmopolitan, Buzzfeed, Daily Telegraph, News.com.au и многими другими. 


    В 2017 году Сорелл Амор стала победительницей конкурса «Лучшая работа на планете», организованного американской компанией ThirdHome, обойдя 17 тысяч участников из более 125 стран, и получила уникальную возможность путешествовать по свету 3 месяца, останавливаясь в роскошных виллах и вип-отелях. Артистичные и искренние селфи, которые она снимала для своих отчетов, принесли ей всеобщее признание — сотни тысяч подписчиков в Instagram и на YouTube и миллионы публикаций в СМИ, в том числе в таких авторитетных изданиях, как Forbes, Business Insider, Cosmopolitan, Buzzfeed и Daily Telegraph. Теперь Сорелл делится секретами своего мастерства: ее книга поможет вам освоить искусство позирования и фотосъемки, найти свой уникальный стиль и создать эффектный образ в соцсетях.

    16+


    • Рейчел де Тампл — повар и автор кулинарных бестселлеров. Работала вместе с звездными британскими шеф-поварами — Хестоном Блюменталем, Питером Гордоном и Марко Пьером Уайтом. 

    • Ведет курсы по консервации и ферментации в популярной кулинарной школе River Cottage. 

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


    Рейчел де Тампл отобрала для этой книги лучшие рецепты ферментированных блюд, удивительно простых в приготовлении, но при этом весьма оригинальных: «оливки» из терна, квашеный пастернак с карри и грушей, песто из черемши, крем-фреш на комбуче, морковно-имбирный квас с корицей и куркумой, соленый крыжовник, харриса с черешней и веганский кефир, булочки с ревенем и кардамоном, джем из шиповника и миндальная рикотта… Вы убедитесь, что домашняя ферментация — это вкусно, полезно и невероятно увлекательно!

    16+

    Вацлав Смил и «Создание двадцатого века»

    В моём пантеоне умных дядек добавился ещё один — Вацлав Смил. Наткнулся на него абсолютно случайно: то ли в «Мир Позавчера» к нему отсылки были, то ли ещё где-то. Взял на пробу одну из его книг, и таки-да, человечище. Сейчас читаю его мини-биографию и вообще умиляюсь.

    Мужику 74 года. Канадец (ха!). Лыс (муа-ха-ха!). Успел написать 37 книг и жалеет, что возраст не позволит написать ещё 77. В год он прочитывает аж 80 книг и вообще — любимец Билла Гейтса. В общем, я морально готовлюсь к тому, что мне понадобится новая книжная полка. И скупить Смила, и как-то приблизиться к восьмидесяти фолиантам в год.

    Книга, которую я распробовал — «Creating the Twentieth Century: technical innovations of 1867-1914 and their lasting impact». В русском издании я её не нашёл, но другие книги Смила на русском точно есть.

    Кроме того, что она тупо интересная и хорошо стимулирует эрудицию, я как-то неожиданно засел её «человеческой» части.

    Во-первых, Майбах, Мазерати, Ситроен, Пежо, Даймлер, Крайслер, Рено, Дизель и уйма других — это прежде всего люди, и они родились в районе аж 150 лет назад. То есть я знал, что за некоторыми старыми марками машин стоят конкретные люди, взять того же Форда, но блин, за практически всеми старыми машинами есть конкретные фамилии. И их корпорациям уже под сотню и больше лет!

    Правда, у Дизеля судьба как-то не сложилась. Но хоть в Беларуси зимой часто упоминается всуе.

    Во-вторых, хотя по ощущениям мир вокруг стремительно меняется и развивается, за последние сто лет фундаментально мало что изменилось. Мне на ум приходит разве что атомное оружие, отменившее «большие» войны, и, с натяжкой, массовые компьютеры.

    С другой стороны, между 1860-ми и первой мировой войной всего два поколения поставили на поток производство и доставку электричества, сделали телефоны, радио, персональные автомобили, научились летать, плавить очень много стали (это важно) и синтезировать азотные удобрения. Если бы не последние, то кормить людей стало бы нечем задолго до наших семи с плюсом миллиардов. Кстати, наверное поэтому органик продукты никогда не станут доступны всем — без «химии» нужное количество еды просто не вырастить.

    Всего за два поколения мир изменился вообще. Ну то есть полностью. Ничего подобного не было со времён изобретения сельского хозяйства и пока не повторялось.

    Я искренне верил, что, например, последние поколения двадцатого века, с большего, толковее последних поколений девятнадцатого, восемнадцатого и далее по списку. Всё-таки более массовое образование, уточнённая картина мира, и т. п. Но теперь не знаю. Массовое ведь не всегда качественное, и, судя по описаниям тогдашних людей, их мотивация и поступки вполне похожи на сегодняшние.

    В-третьих, не так важно, кто сделал изобретение, как то, кто нашёл способ его хорошо продать и тем самым передал людям на пользование. Важно именно из-за «передал другим». Маркони умудрился продать идею радио, а Попов — нет. Догадайтесь, кто получил Нобелевскую премию.

    В-четвёртых, гиганты тех десятилетий — всё ещё люди, и иногда даже очень странные.

    Например, Томас Эдисон изобрёл всё. Ну, может не совсем всё, но он успел засунуть свои изобретательные пальцы и в электричество (и лампочки, есс-на), и в генераторы, и в радио, и в звукозапись, и в будущее кино. Но когда началась война за стандарт передачи тока, постоянный или переменный, он начал сильно расстраивать своих будущих биографов. Писал ерунду в газеты, демонстративно убивал собак переменным током, чтобы показать, насколько тот опасен, предложил его использовать для смертной казни. А под конец жизни вообще в оккультизм подался.

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

    У Альфреда Нобеля вообще как-то всё печально получилось. Один из его экспериментов с нитроглицерином убил младшего брата, и вот как в возрасте 54 лет он описывал сам себя (вольный перевод, но смысл сохранён):

    Альфред Нобель — жалкое создание, которое сердобольному врачу следовало задушить на выходе из утробы матери. Основные достоинства: всегда имел чистые ногти и не был обузой для других. Главные недостатки: нет ни жены, ни детей, ни аппетита. Самая большая просьба: не быть захороненным заживо. Самый большой грех: не поклонялся Мамоне.  Важнейшие события в его жизни: ни одного.

    Нобель умер от кровоизлияния в мозг в 63, что, в принципе, можно назвать «умер своей смертью». В отличие от Дизеля, который не стал пускать дело на самотёк и прыгнул с корабля в воду в 53.

    Хорошая книга, в общем. Много поводов подумать. Много поводов обновить свою картину мира.

    Поделиться ссылкой:

    Билл Гейтс рассказал о лучшей книге, которую прочитал за последнее время

    Основатель Microsoft Билл Гейтс ведет собственный блог о книгах. Периодически он публикует списки книг, которые советует прочитать, и пишет на них небольшие рецензии. В этот раз он рассказал о последней работе одного из своих любимых авторов, Вацлава Смила, «Цифры не врут: 71 вещь, которую вам надо знать о мире».

    Ученый и политолог чешского происхождения Вацлав Смил известен своими книгами о связи энергетики с экологией, демографией и политикой, а также тем, что это один из любимых авторов Гейтса. «Я жду его новых книг так же, как некоторые люди ждут очередных „Звездных войн”», — говорил предприниматель.

    Цитируя Смила, Гейтс часто делает оговорку, что его книги «не для всех» и могут «читаться как учебник или техническое руководство». Но, согласно последней рецензии предпринимателя, в новой книге Смил «берет все, что делает его творчество замечательным, и сводит это к легкому для чтения формату». «Я отчаянно рекомендую эту книгу всем, кто любит учиться», — написал Гейтс.

    Он объяснил, что очарование книги «Цифры не врут…» заключается в том, что она столь же проницательна и насыщена полезной информацией, как и более ранние работы Смила, но написана в более легком жанре.

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

    1. Размер человеческого мозга связан с потоотделением

    «Люди — чемпионы по потоотделению. Мы регулируем температуру тела с помощью пота лучше, чем любое другое млекопитающее (отчасти потому, что у нас очень мало волос). […] Наши предки обладали большей выносливостью, чем животные, на которых они охотились. Это позволило найти источник белка, который стал топливом для развития человеческого мозга».

    2. Французы начали пить гораздо меньше вина, чем раньше

    «В 1926 году среднестатистический француз выпивал впечатляющие 136 литров вина. Но к 2020 году эта цифра сократилась всего до 40 литров. […] Означает ли это, что французы стали более внимательны к своему здоровью? Была ли жизнь в 1920-е годы такой унылой, что людям приходилось пить? Заменили ли люди потребление вина другими развлечениями, такими как просмотр телевизора или страниц в интернете? Мне нравится, как эта книга заставляет вас задуматься об истории, лежащей в основе, казалось бы, нишевой статистики».

    3. 1880-е годы стали самым значительным десятилетием в истории человечества

    «Приятно считать эпоху, в которой мы живем сейчас, временем беспрецедентных инноваций, но Смил утверждает, что настоящий технологический бум случился в 1880-х годах. Десятилетие было ознаменовано открытием электричества и двигателя внутреннего сгорания, наряду с несколько менее значимыми, но все же важными изобретениями, такими как шариковая ручка, велосипед и Coca-Cola».

    Руководство по SVG-анимациям (SMIL) — CSS-LIVE

    Перевод статьи A Guide to SVG Animations (SMIL) с сайта css-tricks.com, автор — Сара Суайдан. Публикуется с разрешения автора.

    Перед вами гостевой постинг Сары Суайдан. Сара — мастер докапываться до самых глубин классных веб-новинок, подробно и понятно разбирая их до основания. Здесь она погружается в недра SMIL (и смежных технологий) и синтаксиса анимаций, встроенного в сам SVG, и делится с нами этим внушительным руководством.

    Введение

    SVG-графику можно анимировать с помощью анимационных элементов. Эти анимационные элементы изначально были определены в спецификации анимаций SMIL. В их число входят:

    • <animate> — позволяющий анимировать скалярные атрибуты и свойства в течение периода времени;
    • <set> — являющийся удобным сокращением для animate, что удобно для задания анимаций для нечисловых атрибутов и свойств, наподобие свойства visibility;
    • <animateMotion> — позволяющий двигать элемент по заданной траектории;
    • <animateColor> — изменяющий значение цвета каких-либо атрибутов или свойств с течением времени. Заметьте, что элемент <animateColor> устарел, и вместо него рекомендуется использовать обычный элемент animate для свойств, принимающих значения цвета. Тем не менее, он всё еще есть в спецификации SVG 1.1, где он явно помечен как устаревший; из спецификации SVG 2 он удален полностью.

    В дополнение к анимационным элементам, определенным в спецификации SMIL, SVG включает расширения, совместимые со спецификацией SMIL animations; эти расширения включают атрибуты, расширяющие функциональность элемента <animateMotion>, и дополнительные анимационные элементы. В расширения SVG входят:

    • <animateTransform> — позволяет анимировать один из атрибутов трансформации SVG во времени, например, атрибут transform;
    • path (атрибут) — позволяет использовать все возможности синтаксиса данных для SVG-контуров в атрибуте path элемента animateMotion (SMIL Animation разрешает лишь подмножество соотв. синтаксиса в атрибуте path). Мы еще поговорим о animateMotion в следующем разделе.
    • <mpath> — используется в сочетании с элементом animateMotion для указания траектории движения, которую можно использовать — логично — для движения по траектории. Элемент mpath ставится внутрь элемента animateMotion, перед закрывающим тегом.
    • keypoints (атрибут) — используется как атрибут для animateMotion, чтобы с точностью управлять скоростью движения по траектории.
    • rotate (атрибут) — используется как атрибут для animateMotion для управления тем, будет ли объект автоматически поворачиваться так, чтобы его ось X указывала в ту же (или противоположную) сторону, что и касательный вектор направления траектории движения. Этот атрибут — ключ к тому, чтобы анимация движения по траектории работала, как ожидается. Подробнее об этом в разделе о animateMotion.

    По своей природе SVG-анимации напоминают CSS-анимации и переходы. Создаются ключевые кадры, объекты движутся, цвета меняются и т.п. Однако они могут делать и то, чего CSS-анимации не могут, что мы еще рассмотрим.

    Зачем использовать SVG-анимации?

    SVG-картинки могут быть стилизованы и анимированы с помощью CSS (см. слайды). По сути, все трансформации и анимированные переходы, которые можно применять к HTML-элементам, применимы и к SVG-элементам. Но есть SVG-свойства, которые не анимируются силами CSS, а только силами SVG. Например, SVG-путь изначально содержит набор данных (атрибут d=""), которые определяют его форму. Эти данные можно изменять и анимировать с помощью SMIL, но не с помощью CSS. Это связано с тем, что SVG-элементы описываются набором атрибутов, известных как атрибуты представления. Некоторые из этих атрибутов можно устанавливать, менять и анимировать с помощью CSS, а некоторые нельзя.

    Итак, многие анимации и эффекты на данный момент силами CSS просто недостижимы. Недостающие возможности CSS-анимаций для SVG можно восполнить либо использованием JavaScript, либо декларативными SVG-анимациями, основанными на SMIL.

    Если вы предпочитаете JavaScript, я рекомендую библиотеку snap.svg Дмитрия Барановского, которую описывают как «SVGшный jQuery». Вот собрание примеров для нее.

    Если же вам больше по душе декларативный подход к анимациям, вы можете воспользоваться анимационными SVG-элементами, которые мы рассматриваем в этом руководстве!

    Еще одно преимущество SMIL перед JS-анимациями — то, что JS-анимации не работают, если SVG встроен в страницу в виде img или использован как background-image в CSS. SMIL-анимации работают в обоих случаях (по крайней мере, должны, поддержка браузерами на подходе). Это большое преимущество, по-моему. Оно может оказаться решающим, чтобы вы предпочли SMIL прочим вариантам. И эта статья — руководство, чтобы помочь вам начать использовать SMIL уже сегодня.

    Браузерная поддержка и варианты для подстраховки

    Поддержка SMIL браузерами вполне прилична. Это работает во всех браузерах, кроме IE и Оперы Мини. За подробностями о поддержке можете обратиться к таблице совместимости на Can I Use.

    Если вам нужен резервный вариант на случай неподдержки SMIL-анимаций, вы можете «на лету» проверить наличие поддержки в браузере с помощью Modernizr. Если SMIL не поддерживается, вы можете предусмотреть какую-то замену (JS-анимацию, альтернативный интерфейс и т.д.).

    Указание целевого объекта анимации с помощью

    xlink:href

    Какой из четырех анимационных элементов вы бы ни выбрали, вам нужно указать целевой объект, для которого этот элемент задает анимацию.

    Чтобы указать этот объект, можно использовать атрибут xlink:href. Этот атрибут принимает URI-ссылку на элемент, который будет объектом нашей анимации и который, соответственно, и будет изменяться с течением времени. Целевой объект должен быть частью текущего фрагмента SVG-документа.

    <rect ... />
    <animation xlink:href="#cool_shape" ... />
    

    Если вы уже сталкивались с анимационными SVG-элементами, вы, вероятно, видели их вложенными прямо в тот элемент, который ими предполагалось анимировать. Это тоже возможно, согласно спецификации:

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

    <rect ... >
      <animation ... />
    </rect>
    

    Так что если вы хотите «инкапсулировать» анимацию в элементе, к которому она применяется, вы можете делать так. А если вы хотите вынести анимации в какое-то другое место документа, вы можете сделать и это, указав целевой объект каждой анимации с помощью xlink:href — оба способа работают отлично.

    Указание целевого свойства анимации с помощью

    attributeName и attributeType

    У всех анимационных элементов может быть и еще один общий атрибут: attributeName. Атрибут attributeName используется для указания имени атрибута, который вы анимируете.

    Например, если вы хотите анимировать положение центра <circle> на оси X, вы можете задать cx в качестве значения атрибута attributeName.

    attributeName принимает лишь одно значение, а не список значений, так что вы можете анимировать только по одному атрибуту за раз. Если вы хотите анимировать более одного атрибута, вам нужно определить более одной анимации для одного элемента. Мне бы хотелось, чтобы это было иначе, и здесь я вижу преимущество CSS-анимаций перед SMIL. Но опять же, из-за значений, возможных для других анимационных атрибутов (следующими в очереди на рассмотрение), есть смысл определять только одно имя атрибута за раз, иначе значения других атрибутов могут стать слишком сложными для работы с ними.

    Указывая имя атрибута, вы можете добавить XMLNS-префикс (сокращение от «пространство имен XML»), чтобы обозначить пространство имен для атрибута. Пространство имен также можно указать с помощью атрибута attributeType. Например, некоторые атрибуты входят в пространство имен CSS (что значит, что они могут быть также CSS-свойствами), а другие есть только в XML. Таблицу этих атрибутов можно посмотреть здесь. В этой таблице приведены не все атрибуты SVG. Это только те из них, что можно задавать с помощью CSS. Некоторые из них уже доступны как CSS-свойства.

    Если значение attributeType не заданано явно или равно auto, браузер должен сначала поискать соответствующее имя свойства в списке CSS-свойств, и, если ничего не найдено, поискать в пространстве имен XML по умолчанию для данного элемента.

    Например, следующий код анимирует opacity SVG-прямоугольника. Так как атрибут opacity доступен также как CSS-свойство, значение attributeType указывает на пространство имен CSS:

    <rect>
      <animate attributeType="CSS" attributeName="opacity" 
               from="1" to="0" dur="5s" repeatCount="indefinite" />
    </rect>
    

    Мы пройдемся по другим анимационным атрибутам в нижеследующих примерах. Если не указано иное, все анимационные атрибуты — общие для всех анимационных элементов.

    Анимация атрибута элемента от одного значения до другого в течение отрезка времени и указание конечного состояния:

    from, by, to, dur и fill

    Давайте начнем с перемещения круга из одного положения в другое. Будем делать это, меняя значение его атрибута cx (который указывает X-координату его центра).

    Будем использовать для этого элемент <animate>. Этот элемент используется для анимации одного атрибута за раз. Атрибуты, значениями которых являются числа и цвета, обычно анимируются с помощью <animate>. За списком атрибутов, которые можно анимировать, обратитесь к этой таблице.

    Чтобы изменить значение с одного на другое за период времени, используются атрибуты from, to, и dur. В дополнение к ним вы можете указать, когда анимация должна начаться, с помощью атрибута begin.

    <circle r="30" cx="50" cy="50" fill="orange" />
    
      <animate 
        xlink:href="#my-circle"
        attributeName="cx"
        from="50"
        to="450" 
        dur="1s"
        begin="click"
        fill="freeze" />
    

    В примере выше, мы определили круг и затем вызвали анимацию для этого круга. Центр круга перемещается с начальной позиции в 50 единиц до 450 единиц вдоль оси X.

    Атрибуту begin задано значение click. Это значит, что круг начинает двигаться, когда его кликнули. Можно также задать ему значение времени. Например, begin="0s" запускает анимацию сразу же, как только страница загрузилась. Вы можете отсрочить анимацию, задавая положительные значения времени. Например, begin="2s" запустит анимацию через две секунды после загрузки.

    Еще более интересная особенность begin — то, что вы можете задавать значения типа click + 1s, чтобы запустить анимацию через секунду после клика! Более того, вы можете использовать другие значения, позволяющие синхронизировать анимации без необходимости рассчитывать длительности и задержки других анимаций. Подробнее об этом позже.

    Атрибут dur похож на эквивалент animation-duration в CSS.

    Атрибуты from и to похожи на ключевые кадры from и to в блоке @keyframe CSS-анимации:

    @keyframes moveCircle {
      from { /* начальное значение */ }
      to { /* конечное значениe */ }
    }
    

    Атрибут fill (который довольно неудачно получил одинаковое название с атрибутом fill, определяющим цвет заливки элемента) похож на свойство animation-fill-mode, определяющее, должен ли элемент вернуться в начальное состояние после завершения анимации, или нет. Значения похожи на аналогичные в CSS, за исключением других имен:

    • freeze: результат анимации определен как «застывший» в конечном значении активного периода анимации. Результат анимации остается «застывшим», пока документ открыт (или до перезапуска анимации).
    • remove: результат анимации убирается (больше не применяется), когда активный период анимации завершился. Как только достигнут конец анимации, анимация больше не влияет на целевой объект (если ее не перезапустить).

    Попробуйте менять значения в живом демо-примере, чтобы посмотреть, как они влияют на анимацию:

    Просмотреть пример вживую на CodePen.

    Атрибут by служит для указания относительного сдвига анимации. Как можно предположить из названия, с его помощью вы можете указать величину, на которую анимация должна продвинуться. Эффект от by виден практически только тогда, когда вы продвигаетесь по анимации дискретными шагами, наподобие того, как это работает с CSS-функцией steps(). SVG-эквивалент самой CSS-функции steps()— это calcMode="discrete". Мы дойдем до атрибута calcMode далее в статье.

    Другой случай, когда эффект от by более очевиден — когда вы задаете только атрибут to. Например, если вы будете использовать его с элементом set, который мы рассмотрим далее в статье.

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

    Перезапуск анимаций с помощью

    restart

    Бывает полезно не дать анимации перезапуститься, пока она активна. Для этого SVG предлагает атрибут restart. Вы можете задать ему одно из трех возможных значений:

    • always: анимация может быть перезапущена в любой момент. Значение по умолчанию.
    • whenNotActive: анимация может быть перезапущена, только когда неактивна (т.е. после завершения активности). Попытки перезапустить анимацию во время активного промежутка игнорируются.
    • never: элемент не может быть перезапущен весь остаток простой длительности его родительского контейнера времени (в случае SVG, поскольку родительским контейнером времени является фрагмент SVG-документа, анимация не может быть перезапущена, пока открыт документ).

    Именование и синхронизация анимаций

    Допустим, мы хотим анимировать положение и цвет круга, так, чтобы изменение цвета произошло после завершения движения. Мы можем сделать это, задав атрибуту begin анимации изменения цвета значение, равное duration анимации движения; так мы делали бы это и в CSS.

    Однако у SMIL есть замечательная возможность обработки событий. Мы уже отметили, что атрибут begin принимает значения типа click + 5s. Это значение называется «значением события», и в данном случае состоит из ссылки на событие, за которым следует «часовое значение». Интересный момент заключен в названии второй части: «часовое значение». Почему не просто «значение времени»? Разгадка в том, что вы можете буквально задавать значение как на часах, напр. «10min» или «01:33», что эквивалентно «1 мин 33 с», или даже «02:30:03» (2 ч 30 мин 3 с). На момент написания статьи, часовые значения не реализованы полностью ни в одном браузере.

    Так что, если мы вернемся к предыдущему демо и используем click + 01:30, если браузер начнет его поддерживать, анимация запустится через 1 мин 30 с после клика на круг.

    Другой тип значений, который он может принимать — ID другой анимации, за которым следует ссылка на событие. Если у вас есть две (и более) анимации (неважно, применяются ли они к одному и тому же элементу или нет!) и вы хотите синхронизировать их так, чтобы одна из них запускалась в зависимости от другой, вы можете сделать это, даже не зная длительности второй анимации.

    Например, в следующем демо, синий прямоугольник начинает двигаться через 1 секунду после начала анимации круга. Это достигается заданием каждой анимации своего ID с последующим использованием этого ID с событием begin, как показано в следующем коде:

    <circle r="30" cx="50" cy="50" fill="orange" />
    
    <rect x="25" y="200" fill="#0099cc"></rect>
    
      <animate 
        xlink:href="#orange-circle"
        attributeName="cx"
        from="50"
        to="450" 
        dur="5s"
        begin="click"
        fill="freeze" 
        d="circ-anim" />
    
      <animate 
        xlink:href="#blue-rectangle"
        attributeName="x" 
        from="50"
        to="425" 
        dur="5s"
        begin="circ-anim.begin + 1s"
        fill="freeze" 
        />
    

    Именно begin="circ-anim.begin + 1s" — та часть, что указывает браузеру начать анимацию прямоугольника через 1 секунду после начала анимации круга. Вы можете проверить на живом примере:

    Просмотреть пример вживую на CodePen

    Можно также начать анимацию прямоугольника после завершения анимации круга, используя событие end:

    <animate 
        xlink:href="#blue-rectangle"
        attributeName="x" 
        from="50"
        to="425" 
        dur="5s"
        begin="circ-anim.end"
        fill="freeze" 
       />
    

    Вы можете даже запустить ее в определенный момент до конца анимации круга:

    <animate 
        xlink:href="#blue-rectangle"
        attributeName="x" 
        from="50"
        to="425" 
        dur="5s"
        begin="circ-anim.end - 3s"
        fill="freeze" 
       />
    

    Зацикливание анимаций с

    repeatCount

    Если вы хотите проиграть анимацию больше одного раза, вам пригодится атрибут repeatCount. Можно указать желаемое количество повторений либо использовать ключевое слово indefinite, чтобы анимация повторялась бесконечно. Так что, чтобы повторить анимацию круга дважды, код должен выглядеть примерно так:

    <animate 
        xlink:href="#orange-circle"
        attributeName="cx"
        from="50"
        to="450" 
        dur="5s"
        begin="click"
        repeatCount="2"
        fill="freeze" 
        />
    

    Вы можете проверить на живом примере. Я установила 2 повторения для круга и indefinite для квадрата.

    Просмотреть пример вживую на CodePen.

    Заметьте, как анимация начинается заново с начального значения from, а не со значения, достигаемого в конце анимации. К сожалению, в SMIL нет способа для перехода туда и обратно между начальным и конечным значением, как позволяют CSS-анимации. В CSS свойство animation-direction указывает, должна ли анимация проигрываться в обратном направлении при некоторых (или всех) повторениях. Значение animation-direction: alternate означает, что нечетные циклы анимации проигрываются в прямом направлении, а четные — в обратном. Это значит, что первый цикл проигрывается от начала до конца, второй цикл — назад от конца к началу, третий — снова от начала до конца, и т.д.

    Чтобы добиться этого в SMIL, вам придется воспользоваться JavaScript, чтобы явно менять значения атрибутов from и to. Джон МакПартланд из студии Big Bite Creative не так давно написал пост с объяснением, как он делал это для анимации иконки меню, над которой он работал.

    Еще один выход — указать желаемое конечное значение как значение для середины, а фактическое конечное значение оставить тем же, что начальное. Например, вы можете задать анимацию, начинающуюся со значения from и заканчивающаяся тем же самым значением в to, разве что вам придется указать то значение, которое по смыслу должно быть конечным, в качестве промежуточного значения между from и to.

    В CSS мы могли сделать это примерно так:

    @keyframes example {
      from, to {
        left: 0;
      }
    
      50% {
        left: 300px;
      }
    }
    

    Эквивалент этого в SMIL — использование атрибута values, который мы вкратце разберем чуть позже.

    Таким образом, вышеописанное решение может подойти или не подойти в зависимости от типа анимации, который вам нужен, и от того, нужна ли вам последовательность анимаций, их повторение или накопление их результата.

    Вот симпатичная несложная бесконечная анимация с использованием задержек времени начала, созданная Майлзом Иламом:

    See the Pen Hexagon Ripple by Miles Elam (@mileselam) on CodePen.

    Ограничение времени повторения с помощью

    repeatDur

    Бесконечное повторение анимации может раздражать или отталкивать пользователей, если анимация снова и снова возобновляется долгое время. Так что может иметь смысл ограничить возможность повторения анимации конечным периодом времени, и прекратить повторять ее через какое-то время после начала отображения документа. Оно известно как время представления.

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

    Например, следующий код остановит повторение анимации через 1 мин 30 с после появления документа:

    <animate 
        xlink:href="#orange-circle"
        attributeName="cx"
        from="50"
        to="450" 
        dur="2s"
        begin="0s"
        repeatCount="indefinite"
        repeatDur="01:30" 
        fill="freeze" 
        />
    

    И вот живой демо-пример:

    Синхронизация анимаций на основе количества повторений

    Теперь давайте вернемся на шаг назад, к вопросу синхронизации между двумя анимациями. Действительно, в SMIL вы можете синхронизировать анимации так, что одна анимация запускается в зависимости от количества повторений другой. Например, можно запустить анимацию после энного по счету повторения другой анимации плюс (или минус) произвольное количество времени.

    Следующий пример запускает анимацию прямоугольника на втором повторении анимации круга:

    <animate 
        xlink:href="#blue-rectangle"
        attributeName="x" 
        from="50"
        to="425" 
        dur="5s"
        begin="circ-anim.repeat(2)"
        fill="freeze" 
        />
    

    А вот живой пример, в котором анимация прямоугольника запускается через 2 секунды после второго повторения анимации круга.

    Просмотреть пример вживую на CodePen.

    Прим. перев.: пример в оригинальной статье у меня не работает ни в одном браузере, поэтому я добавил свой видоизмененный вариант. Похоже, чтобы repeat(n) работал в Chrome, число повторений анимации должно быть не менее n+1, т.е. указанное повторение не должно быть последним. Вот этот вариант:

    See the Pen Guide to SVG Animations by Ilya Streltsyn (@SelenIT) on CodePen.

    И вот пример, который составил Дэвид Эйзенберг для книги «Основы SVG», 2-е издание.

    Управление значениями ключевого кадра анимации:

    keyTimes и values

    В CSS мы можем указывать, какие значения должно принимать анимируемое нами свойство в определенном кадре в течение анимации. Например, если вы анимируете левое смещение элемента, то вместо того, чтобы анимировать его, скажем, с 0 до 300 напрямую, вы можете анимировать его так, чтобы в некоторых кадрах оно принимало специальные значения, вроде таких:

    @keyframes example {
      0% {
        left: 0;
      }
      50% {
        left: 320px;
      }
      80% {
        left: 270px;
      }
      100% {
        left: 300px;
      }
    }
    

    Эти 0%, 20%, 80% и 100% — кадры анимации, а значения внутри блока для каждого кадра — значения для данного кадра. Выше описан эффект, когда элемент «отскакивает от стенки», а затем возвращается в окончательное положение.

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

    Чтобы указать ключевые кадры, используйте атрибут keyTimes. А чтобы задать значения анимируемого свойства, используйте атрибуты values. В SMIL достаточно удобная система именования.

    Если мы вернемся к нашему движущемуся кругу и используем значения наподобие тех, что в примере CSS-анимации выше, код будет выглядеть примерно так:

    <animate 
        xlink:href="#orange-circle"
        attributeName="cx"
        from="50"
        to="450" 
        dur="2s"
        begin="click"
        values="50; 490; 350; 450"
        keyTimes="0; 0.5; 0.8; 1"
        fill="freeze" 
        />
    

    Итак, что мы тут сделали?

    Первое, что надо отметить — то, что значения времени ключевых кадров и промежуточных значений указываются в виде списков. Атрибут keyTimes представляет собой список значений времени, разделенных точкой с запятой, задающих темп анимации. Каждое время в списке соответствует значению в атрибуте values и определяет, когда это значение будет использовано в функции анимации. Каждое значение времени в списке keyTimes указывается как число с плавающей точкой от 0 до 1 (включительно), представляющее собой пропорциональное смещение относительно простой длительности анимационного элемента. Так что ключевые моменты времени очень похожи на аналогичные в CSS, только задаются не процентами, а дробью.

    Вот живой пример для кода выше. Кликните по кругу, чтобы начать анимацию.

    See the Pen Просмотреть пример вживую на CodePen.

    Заметьте, что, если используется список значений, анимация будет применять значения последовательно в течение своего периода. Если задан values, любые значения атрибутов from, to и by игнорируются.

    Здесь же стоит также упомянуть, что вы можете использовать атрибут values без атрибута keyTimes — значения автоматически распределяется через равномерные промежутки времени (для любого calcMode, кроме paced, подробнее об этом буквально в следующем разделе).

    Управление темпом анимации с помощью произвольной функции плавности:

    calcMode и keySplines

    Я снова обращусь к сравнению CSS и SMIL, потому что понять синтаксис и некоторые понятия SMIL будет намного проще, если вы уже знакомы с CSS-анимациями.

    В CSS вы можете изменить монотонный темп анимации по умолчанию и указать произвольную функцию плавности, управляющую анимацией, с помощью свойства animation-timing-function. Функция плавности может быть одним из зарезервированных ключевых слов, либо кубической функцией Безье. Последние можно генерировать с помощью инструментов наподобие такого, созданного Лией Веру.

    В SMIL темп анимации задается с помощью атрибута calcMode. По умолчанию темп линейный (linear) у всех анимационных элементов, кроме animateMotion (мы рассмотрим его далее в статье). Помимо значения linear, можно задавать такие значения: discrete, paced или spline.

    Вероятно, вы заметили в последнем предложении новый атрибут: keySplines. Итак, что этот атрибут keySplines делает?

    Снова обратимся к CSS-эквивалентам.

    В CSS, вы можете указывать темп анимации внутри каждого ключевого кадра, вместо того, чтобы задавать темп всей анимации. Это дает лучший контроль над тем, как должна проходить анимация на каждом ключевом кадре. Пример использования этой возможности — создание эффекта «прыгающего мяча». Ключевые кадры для этого могут выглядеть так:

    @keyframes bounce {
        0% {
            top: 0;
            animation-timing-function: ease-in;
        }
        15% {
            top: 200px;
            animation-timing-function: ease-out;
        }
        30% {
            top: 70px;
            animation-timing-function: ease-in;
        }
        45% {
            top: 200px;
            animation-timing-function: ease-out;
        }
        60% {
            top: 120px;
            animation-timing-function: ease-in;
        }
        75% {
            top: 200px;
            animation-timing-function: ease-out;
        }
        90% {
            top: 170px;
            animation-timing-function: ease-in;
        }
        100% {
            top: 200px;
            animation-timing-function: ease-out;
        }
    }
    

    Вместо ключевых слов для функций плавности мы могли задействовать соответствующие кубические функции Безье:

    • ease-in = cubic-bezier(0.47, 0, 0.745, 0.715)
    • ease-out = cubic-bezier(0.39, 0.575, 0.565, 1)

    Давайте начнем с указания ключевых моментов времени и списка значений для нашего оранжевого круга, к которому будет применен такой же эффект «прыгания»:

    <animate 
        xlink:href="#orange-circle"
        attributeName="cy"
        from="50"
        to="250" 
        dur="3s"
        begin="click"
        values="50; 250; 120;250; 170; 250; 210; 250"
        keyTimes="0; 0.15; 0.3; 0.45; 0.6; 0.75; 0.9; 1"
        fill="freeze" 
        />
    

    Анимация начинается по клику и застывает, как только достигнет конечного значения. Следующим шагом, чтобы указать темп для каждого ключевого кадра, мы собираемся добавить атрибут keySplines.

    Атрибут keySplines принимает набор управляющих точек Безье, которые ставятся в соответствие списку keyTimes, определяя тем самым кубическую кривую Безье для управления темпом анимации интервала. Каждое описание управляющих точек представляет собой набор из четырех значений x1 y1 x2 y2, описывающий управляющие точки Безье для одного временного отрезка. Все значения должны быть в диапазоне от 0 до 1, и если атрибуту calcMode не задано значение spline, то атрибут keySplines игнорируется.

    Вместо того, чтобы принимать кубические функции Безье в качестве значений, keySplines принимает координаты двух управляющих точек, используемых для построения кривой. Управляющие точки показаны на следующем скриншоте генератора Лии. Скриншот показывает также координаты каждой точки, обозначенные тем же цветом, что сама точка. Для атрибута keySplines мы будем использовать именно эти значения, чтобы определить темп анимации ключевого кадра.

    SMIL позволяет разделять эти значения либо запятыми с необязательным пробелом после, либо только пробелами. Значения keyTimes, определяющие соответствующий сегмент, являются «опорными точками» Безье, а значения keySplines — управляющие точки. Поэтому набор управляющих точек должен быть меньше, чем количество значений keyTimes (другими словами, keyTimes задает границы интервалов, а keySplines задаются для самих интервалов, поэтому в первом наборе оказыватся на один элемент больше — прим. перев.)

    Если мы вернемся к примеру с «прыгающим мячиком», координаты управляющих точек для функций ease-in и ease-out показаны на следующих рисунках:

    Таким образом, чтобы перевести это в анимационный SVG-элемент, мы получим следующий код:

    <animate 
        xlink:href="#orange-circle"
        attributeName="cy"
        from="50"
        to="250" 
        dur="3s"
        begin="click"
        values="50; 250; 120;250; 170; 250; 210; 250"
        keyTimes="0; 0.15; 0.3; 0.45; 0.6; 0.75; 0.9; 1"
        keySplines=".42 0 1 1;
                    0 0 .59 1;
                    .42 0 1 1;
                    0 0 .59 1;
                    .42 0 1 1;
                    0 0 .59 1;
                    .42 0 1 1;
                    0 0 .59 1;"
        fill="freeze" 
       />
    

    Вот живой демо-пример:

    Просмотреть пример вживую на CodePen.

    Если вы хотите задать лишь единую функцию плавности для всей анимации без каких-либо промежуточных значений, вам всё равно придется задавать ключевые кадры с помощью атрибута keyTimes, но понадобятся только начальный и конечный кадры, т.е. 0; 1, и никаких промежуточных values.

    Относительные и накопительные анимации:

    additive и accumulate

    Иногда бывает полезно определить анимацию, начинающуюся с того места, на котором предыдущая анимация закончилась, или такую, которая использует суммарный накопленный результат предыдущих анимаций как стартовое значение. Для этого в SVG есть два удобно названных атрибута: additive и accumulate.

    Предположим, у вас есть элемент, который должен «расти» в ширину, или линия, длина которой должна увеличиваться, или элемент, который должен перемещаться с места на место поэтапно. Это особенно полезно для повторяющихся анимаций.

    Как для любой другой анимации, вы зададите значения from и to. Однако, когда вы зададите для additive значение sum, каждое из этих значений будет считаться относительно исходного значения анимируемого атрибута.

    Вернемся к нашему кругу. Для него исходная позиция cx равна 50. Если задать from="0" to="100", то ноль на самом деле означает исходные 50, а 100 на самом деле означает 50 + 100; другими словами, практически это как бы задает from="50" to="150".

    Это дает нам следующий результат:

    Просмотреть пример вживую на CodePen.

    Это всё, что делает атрибут additive. Он просто указывает, должны ли значения from и to отсчитываться относительно текущего значения, или нет. Атрибут принимает лишь одно из двух значений: sum и replace. Последнее является значением по умолчанию, и по сути значит, что значения from and to заменяют текущее/исходное значение, что может привести к неприятному скачку перед началом анимации (попробуйте заменить sum на replace в примере выше, чтобы сравнить наглядно).

    Однако, что если мы хотим добавлять значения так, чтобы второе повторение начиналось с конечного значения предыдущего? Здесь в игру вступает атрибут accumulate.

    Атрибут accumulate отвечает за то, является ли анимация накопительной. По умолчанию его значение none, что означает, что при повторении, например, анимация стартует заново с начала. Но вы можете задать ему значение sum, что указывает, что каждая следующая итерация анимации основывается на конечном значении предыдущей итерации.

    Так, если мы вернемся к предыдущей анимации и зададим accumulate="sum", мы получим следующий результат, которого мы и добивались:

    Просмотреть пример вживую на CodePen.

    Обратите внимание, что атрибут accumulate игнорируется, если целевой атрибут не поддерживает сложения значений, или если анимация не повторяется. Он также будет игнорироваться, если функция анимации задана только с атрибутом to.

    Указание времени конца анимации с помощью

    end

    Помимо указания, когда анимация начнется, вы можете также указать, когда она закончится, с помощью атрибута end. Например, вы можете установить анимацию на бесконечное повторение, а затем остановить ее, когда начнется анимация другого элемента. Атрибут end принимает значения, похожие на те, что принимает атрибут begin. Вы можете задавать абсолютные или относительные значения/смещения времени, количество повторений, значения событий и т.д.
    Например, в следующем примере, оранжевый круг медленно движется с периодом в 30 секунд к противоположной стороне холста. Зеленый круг тоже анимируется, но только после клика. Анимация оранжевого круга прекращается, когда начинается анимация зеленого. Кликните по зеленому кругу, чтобы посмотреть, как оранжевый остановится:

    Просмотреть пример вживую на CodePen.

    Разумеется, такая же синхронизация анимаций возможна и для анимаций, применяемых к одному и тому же элементу. Например, предположим, мы установили анимацию цвета для круга, бесконечно меняющую его с одного значения на другое. Затем, когда по элементу кликнули, он движется к противоположной стороне. Теперь мы можем установить, чтобы анимация цвета остановилась, как только по элементу кликнули и анимация движения запустилась.

    Просмотреть пример вживую на CodePen.

    Задание интервалов анимации с помощью нескольких значений

    begin и end

    Действительно, оба атрибута begin и end принимают список значений, разделенных точками с запятой. Каждое значение атрибута begin соответствует одному значению атрибута end, формируя таким образом активные и неактивные интервалы анимации.

    Вы можете представить это как что-то вроде движущейся машины, где у колес машины бывают периоды «активности» и «неактивности», в зависимости от того, движется машина или нет. Вы даже можете сделать анимированный эффект движущейся машины, применив две анимации: одну, которая перемещает машину по координатной оси или некой траектории, причем эта анимация является относительной и накопительной, и вторую — которая вращает колеса машины в периоды, синхронизированные с движением машины.

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

    Просмотреть пример вживую на CodePen.

    Обратите внимание, что в примере выше я использовала элемент <animateTransform> для вращения элемента вокруг центра. Мы поговорим об этом элементе подробнее в нижеследующих разделах.

    Заметьте также, что даже если вы зададите repeatCount значение indefinite, оно будет перекрыто значениями end анимация не будет повторяться бесконечно.

    Ограничение активной длительности элемента с помощью

    min и max

    Точно так же, как вы можете ограничить время повторения анимации, вы можете ограничить и время активной длительности анимации. Атрибуты min и max указывают, соответственно, минимальную и максимальную активную длительность анимационного элемента. Они дают возможность задавать активной длительности элемента верхний и нижний пределы. Значениями обоих атрибутов могут быть часовые значения.

    Для min это указывает минимальную величину активной длительности, измеряемую во время активности элемента. Значение должно быть больше либо равно 0, который является значением по умолчанию и вообще не ограничивает активную длительность.

    Для max часовое значение указывает максимальную величину активной длительности, измеряемую во время активности элемента. Значение также должно быть больше 0. По умолчанию max имеет значение indefinite. Оно вообще не ограничивает активную длительность.

    Если заданы оба атрибута min и max, то значение max должно быть больше или равно значению min. Если это требование не выполняется, оба атрибута игнорируются.

    Но что определяет активную длительность элемента? Мы уже упоминали длительность повторения, в дополнение к «простой длительности», которая является длительностью анимации без повторений (задаваемой с помощью dur), так как это всё работает вместе? Что перекрывает что? И как быть с атрибутом end, который окажется «главным» и просто завершит анимацию?

    Порядок такой: сначала браузер вычисляет активную длительность, исходя из значений dur, repeatCount, repeatDur и end. Затем он сравнивает результат вычисления с заданными значениями min и max. Если результат находится в этих пределах, вычисленное на первом шаге значение считается верным и не меняется. Иначе, возможны две ситуации:

    • Если первоначально вычисленная длительность превышает значение max, активная длительность элемента становится равной значению max.
    • Если первоначально вычисленная длительность меньше значения min, активная длительность элемента становится равной значению min, и элемент ведет себя следующим образом:
      • Если длительность повторения (либо простая длительность, если анимация не повторяется) элемента больше чем min, то элемент проигрывается нормально в течение активной длительности, ограниченной min.
      • Иначе, элемент проигрывается нормально в течение его длительности повторения (либо простой длительности, если элемент не повторяется), а затем «застывает» или не отображается в зависимости от значения атрибута fill.

    Это помогает нам понять, как браузер фактически рассчитывает активную длительность. Ради краткости я не буду вдаваться здесь в подробности этого. Но в спецификации есть весьма исчерпывающая таблица с различными комбинациями атрибутов dur, repeatCount, repeatDur и end, которая показывает, чему будет равна активная длительность в случае каждой комбинации. Вы можете ознакомиться с таблицей и узнать больше подробностей в этом разделе спецификации.

    Наконец, если анимационный элемент должен начинаться раньше его родительского элемента (напр., с отрицательным значением смещения), минимальная длительность отмеряется от вычисленного, а не наблюдаемого начала анимации. Это значит, что значение min может не давать видимого эффекта.

    Пример

    <animate>: морфинг контуров

    Одним из атрибутов, который можно анимировать в SMIL, но не в CSS, является атрибут d (сокращение от data, т.е. «данные») SVG-элемента <path>. Атрибут d содержит данные, определяющие контур формы, которую вы рисуете. Данные контура содержат набор команд и координат, которые сообщают браузеру, где и как рисовать точки, кривые и отрезки, образующие итоговый контур.

    Анимация этого атрибута делает возможным морфинг SVG-контуров и создание эффектов плавного «перетекания» одной формы в другую. Но для того, чтобы изменять форму пути было возможно, начальная, конечная и любая из промежуточных форм должны иметь строго одинаковое количество вершин/ключевых точек, и порядок их должен оставаться тем же. Если число вершин не совпадает, анимация не заработает. Причина этого в том, что изменение формы на самом деле происходит путем перемещения вершин и интерполяции их положения, так что если одна вершина отсутствует или не совпадает, интерполировать оказывается нечего.

    Чтобы анимировать SVG-контур, нужно задать для attributeName значение d, а затем указать для from и to значения, соответствующие начальной и конечной формам, также вы можете использовать атрибут values для задания любых промежуточных форм, через которые форма должна пройти в ходе изменения.

    Ради краткости, я не буду вдаваться тут в подробности, как это делается. Вместо этого вы можете прочитать великолепную статью Ноа Блона, в которой он объясняет, как создавал меняющую форму анимацию как-бы-загрузки с помощью <animate>. Вот живой пример к статье Ноа:

    Просмотреть пример вживую на CodePen.

    А вот еще один пример морфинга, созданный Феликсом Хорнойю:

    See the Pen SVG Countdown by Felix Hornoiu (@felixhornoiu) on CodePen.

    Вы можете даже менять форму контура, используемого как маска для обрезки! Пример этого, созданный Хизер Бачел:

    See the Pen Loading Animation with Morphing SVG! by Heather Buchel (@hbuchel) on CodePen.

    Анимация по произвольной траектории: элемент

    <animateMotion>

    Элемент <animateMotion> — мой любимый анимационный элемент SMIL. Его можно использовать для движения элемента вдоль траектории. Вы задаете траекторию движения одним из двух способов, которые мы сейчас рассмотрим, и затем настраиваете элемент, чтобы он двигался вдоль этой траектории.

    Элемент <animateMotion> принимает те же атрибуты, что мы рассмотрели ранее, плюс три новых: keyPoints, rotate и path. Также есть одно отличие у атрибута calcMode, который по умолчанию для <animateMotion> имеет значение paced, а не linear.

    Задание траектории движения с помощью атрибута

    path

    Атрибут path задает траекторию движения. Он задается в том же формате и интерпретируется тем же образом, что атрибут d элемента path. Эффект анимации движения по траектории заключается в наложении дополнительной матрицы трансформации поверх текущей матрицы трансформации объекта, вызывающей сдвиг по осям X и Y в текущей системе координат пользователя на значения X и Y, рассчитываемые для каждого момента времени. Другими словами, заданная траектория отсчитывается относительно текущего положения элемента, используя данные траектории для перемещения объекта на позицию на этой траектории.

    Для нашего круга мы зададим анимацию по траектории, которая будет выглядеть примерно так:

    Вот код, требующийся для движения круга по этой траектории:

    <animateMotion 
        xlink:href="#circle"
        dur="1s"
        begin="click"
        fill="freeze"
        path="M0,0c3.2-3.4,18.4-0.6,23.4-0.6c5.7,0.1,10.8,0.9,16.3,2.3    c13.5,3.5,26.1,9.6,38.5,16.2c12.3,6.5,21.3,16.8,31.9,25.4 c10.8,8.7,21,18.3,31.7,26.9c9.3,7.4,20.9,11.5,31.4,16.7
        c13.7,6.8,26.8,9.7,41.8,9c21.4-1,40.8-3.7,61.3-10.4 c10.9-3.5,18.9-11.3,28.5-17.8c5.4-3.7,10.4-6.7,14.8-11.5
        c1.9-2.1,3.7-5.5,6.5-6.5" />
    

    Я хочу особо обратить ваше внимание на координаты в данных пути. Путь начинается с перемещения (M) в точку с координатами (0, 0), прежде чем начать рисовать кривую (c) в другую точку. Важно отметить, что точка (0, 0) в данном случае — это позиция нашего круга, неважно, где он находится, а НЕ верхний левый угол системы координат. Как я отметила выше, координаты в атрибуте path отсчитываются относительно текущего положения элемента!

    Результат вышеприведенного кода следующий:

    Просмотреть пример вживую на CodePen.

    Если вы укажете путь, начинающийся с другой точки, а не (0, 0), круг рывком перескочит на расстояние, заданное координатами начальной точки. Например, предположим, что вы рисуете путь в Illustrator с последующим экспортом его в виде траектории движения (так я делала это в первый раз). Экспортированный путь будет выглядеть как-то так:

    <path fill="none" stroke="#000000" stroke-miterlimit="10" d="M100.4,102.2c3.2-3.4,18.4-0.6,23.4-0.6c5.7,0.1,10.8,0.9,16.3,2.3
        c13.5,3.5,26.1,9.6,38.5,16.2c12.3,6.5,21.3,16.8,31.9,25.4 c10.8,8.7,21,18.3,31.7,26.9c9.3,7.4,20.9,11.5,31.4,16.7
        c13.7,6.8,26.8,9.7,41.8,9c21.4-1,40.8-3.7,61.3-10.4 c10.9-3.5,18.9-11.3,28.5-17.8c5.4-3.7,10.4-6.7,14.8-11.5
        c1.9-2.1,3.7-5.5,6.5-6.5"/>
    

    Начальной точкой пути в этом случае будет (100.4, 102.2). Если бы мы использовали этот путь как траекторию движения, круг сначала «прыгнул» бы на примерно 100 единиц вправо и 102 единицы вниз, и лишь затем начал бы движение относительно нового положения. Так что не забывайте об этом при подготовке траекторий для ваших анимаций.

    Если используются атрибуты from, by, to и values, то они указывают форму на текущем холсте, представляющую собой траекторию движения.

    Указание траектории движения с помощью элемента

    <mpath>

    Есть и другой способ задания траектории движения. Вместо использования относительного атрибута path, можно ссылаться на внешний путь с помощью элемента <mpath>. Элемент <mpath>, дочерний по отношению к элементу <animateMotion>, будет указывать на внешний путь с помощью атрибута xlink:href.

    <animateMotion xlink:href="#circle" dur="1s" begin="click" fill="freeze">
      <mpath xlink:href="#motionPath" />
    </animateMotion>
    

    Элемент <path> с траекторией движения может быть указан в любом месте документа; он даже может быть буквально лишь объявлен внутри элемента <defs> и вообще не отображаться на холсте. В следующем примере траектория отображается, потому что в большинстве случаев вы захотите показать путь, по которому элемент движется.

    Заметьте, что, согласно спецификации:

    Различные точки (x, y) формы предоставляют вспомогательные матрицы трансформации поверх текущей матрицы трансформации для указанного объекта, которые вызывают смещение по осям X и Y в текущей пользовательской системе координат на значение (x,y) формы, вычисляемое в зависимости от времени. Таким образом, указанный объект сдвигается с течением времени на смещение траектории движения относительно начала текущей пользовательской системы координат. Вспомогательные матрицы трансформации применяются поверх любых трансформаций, задаваемых свойством transform целевого элемента, и любых анимаций этого атрибута, заданных элементами animateTransform для целевого элемента.

    Опять же, позиция круга «умножается» или «трансформируется» на координаты из данных пути.

    В следующем примере, у нас есть путь посередине холста. Круг позиционируется в начало пути. Но всё же, когда движение по траектории используется, круг не начинает движение из текущего положения. Смотрите пример для лучшего объяснения. Кликните по кругу, чтобы анимировать его.

    Просмотреть пример вживую на CodePen.

    Видите, как круг движется по тому же самому контуру, но в другом месте? Это потому, что позиция круга трансформируется (сдвигается) на значения из данных траектории.

    Один способ обойти это — начинать с положения круга в точке (0, 0), так что трансформация по данным пути передвинет его куда нужно, и всё заработает как ожидалось.

    Другой способ — применить трансформацию, которая «обнулит» координаты круга перед тем, как задействовать траекторию.

    Вот модифицированная версия примера выше, использующая замкнутую траекторию и бесконечно зацикленную анимацию.

    Просмотреть пример вживую на CodePen.

    Правила приоритета для

    <animateMotion>

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

    Правила перекрытия для animateMotion таковы:

    • При задании траектории движения, элемент mpath перекрывает атрибут path, который перекрывает values, а тот перекрывает from, by и to.
    • При определении точек, соответствующих атрибуту keyTimes, атрибут keyPoints перекрывает path, который перекрывает values, а тот перекрывает from, by и to.

    Задание ориентации элемента относительно траектории движения

    rotate

    В нашем предыдущем примере, элемент, который мы анимировали вдоль траектории, был кругом. Но что, если бы мы анимировали элемент, для которого важна ориентация, например, иконку машинки? Иконка машинки в следующем примере создана Freepik.

    В этом примере я заменила круг группой с ID, равным «car», содержащей элемент, образующий группу. Затем, чтобы избежать вышеописанных проблем с движением по траектории, я применила трансформацию, сдвигающую машинку в определенную точку, так что в итоге начальной позицией оказывается точка (0, 0). Значения внутри трансформации на самом деле являются координатами точки, где начинает рисоваться первый контур машинки (сразу после команды M).

    Затем машинка начинает двигаться по траектории. Но… вот как выглядит это движение:

    Просмотреть пример вживую на CodePen.

    Ориентация машинки фиксирована, и не соответствует направлению движения. Чтобы изменить это, мы будем использовать атрибут rotate.

    У атрибута rotate может быть одно из трех значений:

    • auto: указывает, что объект будет поворачиваться с течением времени на угол направления (т.е. по касательному вектору направления) траектории движения.
    • auto-reverse: указывает, что объект будет поворачиваться с течением времени на угол направления (т.е. по касательному вектору направления) траектории движения плюс 180 градусов.
    • число: указывает, что к целевому элементу применена постоянная трансформация вращения, указанное число задает угол поворота в градусах.

    Чтобы исправить ориентацию машинки в примере выше, мы начнем с задания вращению значения auto. Получим вот такой результат:

    Просмотреть пример вживую на CodePen.

    Если вы хотите, чтобы машинка «ездила» снаружи контура, значение auto-reverse решает задачу.

    Просмотреть пример вживую на CodePen.

    Это выглядит лучше, но у нас осталась проблема: машинка выглядит так, будто ездит по траектории задним ходом! Чтобы изменить это, нам придется перевернуть ее по ее оси Y. Это можно сделать путем масштабирования ее по этой оси с коэффициентом -1. Так что, если мы применим трансформацию к g с ID, равным car, машинка «поедет» вперед, как задумано. Трансформация масштабирования просто добавляется последовательно с ранее примененной трансформацией сдвига.

    <g transform="scale (-1, 1) translate(-234.4, -182.8)">
    

    И окончательный демо-пример выглядит так:

    Просмотреть пример вживую на CodePen.

    Управление расстоянием, пройденным анимацией по траектории, с помощью

    keyPoints

    Атрибут keyPoints дает возможность указывать продвижение по траектории для каждого значения, указанного в keyTimes. Если он задан, keyPoints заставляет keyTimes применяться к значениям из keyPoints, а не к точкам, перечисленным в атрибуте values или точкам в атрибуте path.

    keyPoints принимает разделенный точками с запятой список значений с плавающей точкой от 0 до 1 и указывает, как далеко по траектории должен продвинуться объект в момент времени, заданный в соответствующем значении keyTimes. Расчет расстояния определяется алгоритмами браузера. Каждое значение продвижения в списке соответствует одному значению из списка в атрибуте keyTimes. Если задан список keyPoints, в нем должно быть ровно столько же значений, сколько в списке keyTimes.

    Важный момент, который здесь надо отметить — задание значения linear для calcMode, чтобы keyPoints заработал. Кажется, что по логике он должен работать и со значением paced, если ваши ключевые точки смещены то взад, то вперед, но с ним он не работает.

    Вот пример Амелии Беллами-Ройдз (чей профиль на Codepen вам стоило бы изучить полностью), использующий keyPoints для имитации поведения, при котором движение по траектории начинается с предустановленным отступом, поскольку по умолчанию в SMIL у нас сейчас нет такой возможности (прим. перев.: здесь тоже оригинальный пример заменен переведенным вариантом).

    See the Pen Motion along a closed path, arbitrary start point by Ilya Streltsyn (@SelenIT) on CodePen.

    Движение текста по произвольной траектории

    Движение текста по произвольной траектории отличается от движения других SVG-элементов по траекториям. Для анимации текста вам понадобится элемент <animate>, а не элемент <animateMotion>.

    Во-первых, начнем с позиционирования текста вдоль траектории. Это можно сделать, вложив элемент <textPath> внутрь элемента <text>. Текст, который будет размещен вдоль траектории, будет определен внутри элемента <textPath>, а не как непосредственный потомок элемента <text>.

    Затем textPath должен сослаться на фактический путь, который мы хотим использовать, в точности как в предыдущих примерах. Путь, на который мы ссылаемся, тоже может либо отображаться на холсте, либо определяться внутри <defs>. Посмотрите код следующего демо-примера.

    Просмотреть пример вживую на CodePen.

    Чтобы анимировать текст вдоль траектории, мы используем элемент <animate> для анимации атрибута startOffset.

    startOffset представляет собой отступ текста относительно пути. 0% — начало пути; 100% соответствуют его концу. Так что если, например, задать отступ в 50%, текст будет начинаться посередине траектории. Думаю, вы уже догадались, что это нам дает.

    Анимируя startOffset, мы создадим эффект текста, движущегося по траектории. Взгляните на код следующего демо.

    Просмотреть пример вживую на CodePen.

    Анимация трансформаций: элемент

    <animateTransform>

    Элемент <animateTransform> анимирует атрибут трансформации целевого элемента, тем самым позволяя анимации управлять сдвигом, масштабом, вращением и/или наклоном. Он принимает те же атрибуты, что элемент <animate>, плюс один добавочный атрибут: type.

    Атрибут type служит для указания типа трансформации, которую анимируют. У него может быть одно из пяти значений: translate, scale, rotate, skewX и skewY.

    Атрибуты from, by и to принимают значения в том же синтаксисе, который подходит для данного типа трансформации:

    • Для type="translate" каждое отдельное значение выражается как <tx> [,] (сдвиг по каждой оси).
    • Для type="scale" каждое отдельное значение выражается как <sx> [,] (масштаб по каждой оси).
    • Для type="rotate" каждое отдельное значение выражается как <rotate-angle> [ ] (угол поворота и координаты центра вращения).
    • Для type="skewX" and type="skewY" каждое отдельное значение выражается как <skew-angle> (угол наклона).

    Если вы не очень знакомы с функциями SVG-атрибута transform, то ради краткости этой статьи, а также потому, что подробности его синтаксиса и работы выходят далеко за рамки этой статьи, я советую вам прочитать статью о них, которую я написала чуть раньше: «Разбираемся с системами координат и трансформациями в SVG (часть 2): атрибут transform» — прежде чем продолжать изучение этого руководства.

    Вернемся к предыдущему примеру, где мы вращали розовый прямоугольник с помощью элемента <animateTransform>. Код для вращения выглядит так:

    <rect x="50" y="50" fill="deepPink" />
    
      <animateTransform 
          xlink:href="#deepPink-rectangle"
          attributeName="transform" 
          attributeType="XML"
          type="rotate"
          from="0 75 75"
          to="360 75 75" 
          dur="2s"
          begin="0s"
          repeatCount="indefinite"
          fill="freeze" 
          />
    

    Атрибуты from и to указывают угол поворота (начальный и конечный) и центр вращения. Конечно, в них обоих центр вращения остается тем же самым. Если вы не укажете центр, им станет верхний левый угол SVG-холста. Вот живой пример для вышеприведенного кода:

    Просмотреть пример вживую на CodePen.

    Вот еще один забавный пример с одним animateTransform за авторством Габриэля:

    See the Pen Orbit by Gabriel (@guerreiro) on CodePen.

    Анимация одной отдельной трансформации очень проста, однако, всё может стать куда сложнее и запутаннее, когда дело дойдет до множественных трансформаций, особенно с учетом того, что один animateTransform может перекрывать другой, так что вместо наложения или последовательного применения эффектов вы можете получить полную противоположность. Так уж устроены системы координат и трансформации в SVG (снова рекомендую обратиться к ранее упомянутой статье). Примеров масса, но они выходят за рамки статьи. Для трансформирования SVG-графики я советую использовать CSS-трансформации. Браузеры вовсю стараются, чтобы те идеально работали с SVG, так что, возможно, вам вообще не понадобится никакой SMIL для анимации трансформаций в SVG.

    Элемент

    <set>

    Элемент set предоставляет простое средство для задания значения атрибуту на определенный отрезок времени. Он поддерживает все типы атрибутов, включая те, которые по своей логике не могут быть интерполированы, напр. строки и булевы значения. Элемент set не поддерживает относительных/накопительных анимации: относительные и накопительные атрибуты недопустимы и игнорируются, даже если указаны.

    Поскольку <set> используется для выставления элемента в определенное значение в определенный момент и отрезок времени, для него доступны не все атрибуты, упомянутые для предыдущих анимационных элементов. Например, у него нет атрибутов from или by, потому что изменяемое значение не меняется со временем постепенно.

    Для set вы можете указать целевой элемент, имя и тип атрибута, значение to и время анимации, которым можно управлять с помощью следующих атрибутов: begin, dur, end, min, max, restart, repeatCount, repeatDur и fill.

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

    Просмотреть пример вживую на CodePen.

    Элементы, атрибуты и свойства, которые можно анимировать

    Не все SVG-атрибуты можно анимировать, и не все из тех, которые можно анимировать, можно анимировать всеми анимационными элементами. За полным списком анимируемых атрибутов и таблицей, показывающей, какой из этих атрибутов можно анимировать каким элементом, пожалуйста, обратитесь к этому разделу спецификации SVG-анимаций.

    В заключение

    У SMIL огромный потенциал, и я едва затронула поверхность и лишь коснулась основ и технических моментов того, как он работает в SVG. Можно создать множество очень впечатляющих эффектов, особенно с морфингом и преобразованием форм. Предела фантазии нет. Не бойтесь экспериментировать! И не забывайте делиться тем, что делаете, с сообществом; мы будем счастливы видеть, чего вы смогли достичь. Спасибо за чтение!

    Эта статья была обновлена по результатам дискуссии в комментариях. Спасибо за важные дополнения, Амелия. =)

    P.S. Это тоже может быть интересно:

    Улыбнись! Это может сделать вас счастливее

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

    Чарльз Дарвин впервые высказал идею о том, что эмоциональные реакции влияют на наши чувства, в 1872 году. «Свободное выражение эмоций внешними признаками усиливает их», — писал он.Уважаемый психолог XIX века Уильям Джеймс дошел до того, что утверждал, что если человек не выражает эмоции, он ее вообще не ощущал. Хотя сегодня немногие ученые согласятся с таким утверждением, есть свидетельства того, что эмоции затрагивают не только мозг. Лицо, в частности, кажется, играет большую роль.

    В феврале этого года психологи из Университета Кардиффа в Уэльсе обнаружили, что люди, чья способность хмуриться была нарушена косметическими инъекциями ботокса, в среднем счастливее, чем люди, которые могут хмуриться.Исследователи провели опросник по тревоге и депрессии у 25 женщин, половина из которых получила инъекции ботокса, препятствующие хмурому взгляду. Реципиенты ботокса сообщали, что в целом чувствовали себя более счастливыми и менее тревожными; что более важно, они не сообщали о том, что чувствовали себя более привлекательными, что говорит о том, что эмоциональные эффекты не были вызваны психологическим стимулом, который мог исходить от косметического характера лечения.

    «Похоже, то, как мы чувствуем эмоции, не ограничивается нашим мозгом — есть части нашего тела, которые помогают и усиливают наши чувства», — говорит Майкл Льюис, соавтор исследования.«Это похоже на петлю обратной связи». В связанном исследовании, проведенном в марте, ученые Мюнхенского технического университета в Германии сканировали реципиентов ботокса с помощью аппаратов фМРТ, прося их имитировать сердитые лица. Они обнаружили, что субъекты ботокса имели гораздо более низкую активность в цепях мозга, участвующих в эмоциональной обработке и реакциях — в миндалевидном теле, гипоталамусе и частях ствола мозга — по сравнению с контрольной группой, которая не получала лечения.

    Эта концепция работает и в обратном направлении — усиливает эмоции, а не подавляет их.Согласно исследованию, опубликованному в мае 2008 года в журнале Journal of Pain , люди, которые хмурятся во время неприятной процедуры, сообщают, что чувствуют больше боли, чем те, кто этого не делает. Исследователи прикладывали тепло к предплечьям 29 участников, которых просили во время процедуры корчить несчастные, нейтральные или расслабленные лица. Те, кто демонстрировал негативное выражение лица, сообщили, что испытывают больше боли, чем две другие группы. Льюис, который не участвовал в этом исследовании, говорит, что планирует изучить влияние инъекций ботокса на восприятие боли.«Возможно, люди могут чувствовать меньше боли, если они не могут выразить ее», — говорит он.

    Но все мы слышали, что подавлять свои чувства плохо — так что же происходит, если человек намеренно подавляет свои негативные эмоции на постоянной основе? Работа психолога Джудит Гроб из Университета Гронингена в Нидерландах предполагает, что этот подавленный негатив может «просачиваться» в другие сферы жизни человека. В серии исследований, которые она выполнила для получения докторской степени. диссертацию и подала на публикацию, она просила испытуемых смотреть на отвратительные изображения, скрывая свои эмоции или держа ручки во рту таким образом, чтобы они не хмурились.Третья группа могла реагировать по своему усмотрению.

    Как и ожидалось, испытуемые в обеих группах, которые не выражали своих эмоций, сообщали, что чувствовали меньше отвращения после этого, чем испытуемые из контрольной группы. Затем она дала испытуемым ряд когнитивных заданий, включавших упражнения на заполнение пропусков. Она обнаружила, что испытуемые, которые подавляли свои эмоции, плохо справлялись с заданиями на запоминание и выполняли словесные задания, чтобы произвести больше негативных слов — например, они завершали «gr_ss» как «грубый», а не «трава» — по сравнению с контрольной группой.«Люди, которые делают это регулярно, могут начать смотреть на мир в более негативном свете», — говорит Гроб. «Когда лицо не помогает выразить эмоцию, эмоция ищет другие каналы, чтобы выразить себя».

    Никто еще не знает, почему наше выражение лица влияет на наши эмоции так, как кажется. Ассоциации в нашем уме между тем, что мы чувствуем, и тем, как мы реагируем, могут быть настолько сильными, что наши выражения просто усиливают наши эмоции — возможно, для связи не существует эволюционной причины.Тем не менее, наши лица, кажется, сообщают о нашем душевном состоянии не только другим, но и нам самим. «Я улыбаюсь, значит, я должен быть счастлив», — говорит Гроб.

    Улыбнись! Это полезно для вашего сердца

    Хорошее настроение заставляет нас улыбаться, верно? Конечно, хотя новое исследование предполагает, что верно и обратное: улыбка может быть полезна для нашего здоровья.

    В исследовании, которое будет опубликовано в следующем выпуске журнала Psychological Science , исследователи из Университета Канзаса обнаружили, что акт улыбки положительно влияет на наше счастье и физическое здоровье, помогая сердцу быстрее восстанавливаться после стрессовых событий. .

    Сверху: примеры фальшивой улыбки, искренней улыбки и нейтрального выражения лица, которые участники исследования должны были имитировать (с помощью палочек для еды). © Психологическая наука

    Исследователи случайным образом распределили около 170 американских студентов в одну из трех групп. Всех студентов попросили подражать научному сотруднику, который держит палочки для еды между зубами, как и сами студенты. (В качестве прикрытия студентам сказали, что они участвуют в многозадачном эксперименте.)

    Реклама Икс

    Познакомьтесь с набором инструментов «Большое добро»

    Из GGSC на вашу книжную полку: 30 научно обоснованных инструментов для хорошего самочувствия.

    В одной группе научный сотрудник заставил студентов невольно активировать лицевые мышцы для подлинной (или «Дюшенновской») улыбки, которая задействует мышцы в уголках губ и мышцы вокруг глаз, создавая «гусиные лапки» по бокам. глаз.

    В других группах студентов заставляли имитировать либо «стандартную», неискреннюю улыбку — задействуя только мышцы вокруг губ, а не глаз, — либо вообще не выражать никаких эмоций.

    Затем, сохраняя свои палочки для еды и выражение лица нетронутыми, студенты выполняли стрессовые задания, в том числе одно, которое требовало от участников обводить звезду недоминантной рукой снова и снова, не выходя за рамки (когда они рисовали за пределами линий, они услышал громкое жужжание). Исследователи контролировали частоту сердечных сокращений студентов до, во время и после выполнения этих задач, а также спрашивали студентов, насколько хорошо они себя чувствовали до и после выполнения стрессовых задач.

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

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

    «Улыбающиеся были немного защищены», — говорит Тара Крафт, ведущий автор исследования и аспирант психологии Канзасского университета.

    Значит ли это, что результаты означают, что мы должны «притворяться, пока не сделаем»?

    Предыдущее исследование показало, что фальшивая улыбка на самом деле может быть вредна для вашего счастья, но в этом исследовании лицевые мышцы участников двигались точно так же, как если бы их естественным образом заставили изобразить искреннюю улыбку — принципиальное отличие от обычной фальшивой улыбки. улыбка.Тем не менее, студенты, которым прямо сказали, что палочки для еды заставляют их «улыбаться», сообщили о более низком уровне счастья, чем студенты, которые не знали, что они улыбаются, предполагая, что сознательное симулирование улыбки может дорого обойтись.

    В дополнение к доказательствам того, что искренние улыбки более эффективны для снижения стресса, чем фальшивые, исследование также предполагает, что улыбка во время сложной задачи, а не только после нее, может помочь телу и разуму быстрее восстановиться. Предыдущие исследования изучали только то, как улыбка влияет на человека после события, говорит Крафт.

    «Самое интересное в этом то, что улыбка в стрессовый период также положительно влияет на здоровье вашего сердца в течение нескольких минут после того, как вы улыбнулись, что довольно круто», — говорит она. «Мы видели так много работ, показывающих, что это хорошо для эмоционального и социального здоровья и благополучия, но это действительно первое исследование в своем роде, которое показывает, что улыбка полезна для вас физически».

    Прекратите говорить девушкам улыбаться — это вынуждает их принять несправедливый статус-кво

    Девочек постоянно призывают улыбаться, начиная от продаваемых в магазинах футболок с надписью «все любят счастливых девушек» и заканчивая призывами к девушкам улыбаться, когда они идут по улице.

    Одри Хепберн однажды заявила, что «счастливые девушки — самые красивые девушки» — теперь эта цитата повторяется на постфеминистском рынке на футболках, наволочках и канцелярских принадлежностях.

    Пожалуй, самым публичным призывом к девушке улыбнуться был язвительно-саркастический твит Дональда Трампа о том, что экоактивистка Грета Тунберг «похожа на очень счастливую девушку, которая с нетерпением ждет яркого и прекрасного будущего». Так приятно видеть!»


    Подробнее: Что означает окончание эпохи Трампа для американского и глобального девичества


    Но поднимите капюшон этого давления, чтобы казаться беззаботным и счастливым, и загляните под него: открывается нечто гораздо более тревожное.

    В течение последних 15 лет я изучал опыт девочек, особенно подростков в возрасте от 8 до 12 лет, в отношении культуры потребления. Давление на девочек, чтобы они были веселыми, счастливыми и улыбающимися, многое говорит о культурных ожиданиях, проецируемых на девочек и девичество.

    Вечное веселье?

    Это постоянное ожидание того, что девушки будут всегда улыбаться, деполитизирует девушек и позиционирует их как уступчивых в собственном порабощении. «Веселье» отвлекает от более глубоких политических проблем, отбивая у девочек охоту думать об эксплуатации и насилии, с которыми девочки сталкиваются во всем мире.

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

    Молодые девушки идут вместе во время ежегодного Женского мемориального марша в Ванкувере 14 февраля 2021 года. Марш проводится в честь пропавших без вести и убитых женщин и девочек из сообщества с остановками по пути, чтобы отметить, где женщин видели или нашли в последний раз. (КАНАДСКАЯ ПРЕСС/Дэррил Дайк)

    Ученый-феминистка Сара Ахмед пишет, что счастье обещано тем, кто стремится жить своей жизнью беспрепятственно, не нарушая статус-кво.Бросать вызов статус-кво, привлекая внимание к этим проблемам, разрушает фантазию.

    Если все любят счастливую девушку, как написано на футболке, то несчастные девушки непривлекательны: это явное предупреждение девушкам, чтобы они оставались счастливыми, иначе они окажутся «психологически и эстетически непривлекательными».

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

    Счастье и веселье — формы популярного феминизма, которые представляют гендерное равенство как расширение прав и возможностей личности, затмевающее феминистскую структурную критику. Несчастье отклоняется от постфеминистского сценария, согласно которому женщины, которые несут ответственность за свое собственное счастье и эмансипацию, должны мыслить позитивно и вдохновляться на перемены. Акцент делается на индивидуальных действиях над коллективным сознанием.

    Эти моральные требования счастья и веселья подрывают гражданскую позицию и приверженность обществу.

    Девушка на акции протеста в Вашингтоне, округ Колумбия, держит плакат с изображением Джорджа Флойда. (Оби Онеадор/Unsplash), CC BY

    Лидерство девушек

    Призыв к счастью и веселью освобождает патриархальные структуры и институты от ответственности за несправедливость, несчастье и боль девочек во всем мире и возлагает ответственность за собственное счастье на плечи девочек. Но девушки больше не подчиняются, включая Грету Тунберг, которая блестяще обернула против него собственные слова Трампа.

    Хлопки Тунберг Трампу переворачивают сценарий, разоблачая женоненавистническую и эйджистскую риторику о девушках, чтобы они были счастливы.

    Глобальное молодежное движение, возглавляемое девушками, такими как активистки водных ресурсов Отэм Пельтье и Мари Копени, активистка в области образования Малала Юсуфзай и активистка по защите климата Ванесса Накате, противостоят этим нарративам. Они борются с изменением климата и выступают за социальные перемены, используя целый комплекс эмоций, включая счастье и веселье.

    Девочки отказываются быть отвергнутыми женоненавистническими критиками, которые говорят им «больше улыбаться».

    улыбок заразительны: вот почему

    Исследования показали, что простая улыбка может принести много пользы вам и всем окружающим. Улыбка снимает стресс, поднимает настроение и меняет настроение окружающих.

    Улыбки — это основа нашего взаимодействия друг с другом. Будь то семейные фотографии, селфи из путешествий, собеседование или свидание, наши улыбки являются важной частью того, как мы показываем себя миру.

    Было обнаружено, что существует тесная связь между хорошим здоровьем, долголетием и улыбкой. Это просто доказывает важность наших улыбок! Знаете ли вы, что люди могут воспринимать улыбку с на расстоянии 300 футов от ? Это делает его самым узнаваемым человеческим выражением .

    Вот еще несколько фактов об улыбке: 

    Улыбка делает нас привлекательными. Людей естественным образом привлекают улыбающиеся люди. Используйте силу притяжения своей улыбки, чтобы привлечь людей.

    Улыбка поднимает настроение. Физический акт улыбки активирует обмен нейронными сообщениями в вашем мозгу.Это похоже на то, как улыбка работает как естественный антидепрессант.

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

    Улыбка заразительна. Улыбка способна изменить ваше настроение и настроение окружающих. Люди запрограммированы подражать выражениям других. Так что научно доказано, что улыбка заразительна!

    Поделись своей улыбкой!

    Мы любим видеть ваши улыбки! Мы хотели бы, чтобы вы подписались на нас в Facebook, нашли закрепленный пост «Улыбка заразительна» в верхней части нашей страницы и разместили фотографию, на которой вы улыбаетесь, в комментариях к этому посту, чтобы принять участие и выиграть подарочную карту Target на 25 долларов.Знание того, что вы гордитесь своей улыбкой, — это одна из вещей, которая делает нашу работу такой приятной, а делиться радостью и преимуществами улыбки с другими — еще лучше!

    Спасибо, что являетесь частью нашей семейной практики!

    Если тебе грустно, не заставляй себя улыбаться; это может усугубить ситуацию

    Быстрый вопрос — почему люди улыбаются? Это потому что они счастливы? Или это потому, что они хотят, чтобы был счастлив? Будьте осторожны при выборе ответа — согласно новому исследованию, опубликованному в «Журнале экспериментальной социальной психологии», люди, которые ошибочно верят в последнее, становятся менее счастливыми, когда улыбаются.

    Второе объяснение может показаться циничным, как будто люди изображают счастье, а не делают то, что делает их счастливыми. Но на самом деле в психологии существует довольно хорошо поддерживаемая теория, называемая гипотезой лицевой обратной связи, которая утверждает, что улыбка и другие выражения лица могут активно вызывать эмоции, которые они воспринимают как выражение. Эту теорию трудно доказать, учитывая, что если вы измеряете эмоции людей (либо с помощью опроса, либо с помощью томографии мозга) до и после того, как они улыбаются, трудно сказать, меняются ли их эмоции из-за самой улыбки или из-за того, что вызывает улыбку. заставил их улыбнуться в первую очередь.

    Но умные исследователи нашли способ обойти эту проблему. В 1988 году Фриц Страк, Леонард Мартин и Сабина Степпер опубликовали исследование, в котором испытуемые клали ручки в рот и держали их либо только зубами (что приводит к сокращению тех же мышц, что и при улыбке), либо только губами (что заставляет невозможно улыбаться) и смотреть мультики. Они обнаружили, что «субъекты, которые держали ручку в зубах во время показа мультфильмов, сообщали, что чувствовали себя более удивленными, чем те, кто держал ее во рту.Последующие исследования, проведенные с людьми, произносящими определенные гласные, которые могут вызвать улыбку и другие выражения, подтвердили открытие и повысили вероятность того, что эффект может иметь физиологический компонент: улыбка охлаждает воздух, поступающий в носовую полость, что может улучшить настроение.

    Есть, конечно, и психологическая составляющая; нахмуривание бровей, которое ничего не делает с воздухом, поступающим в нос, заставляет людей сообщать о более высоком уровне печали. И последнее исследование, проведенное Aparna Labroo из Northwestern, Анирбаном Мухопадхьяем из Гонконгского научно-технологического университета и Ping Dong из Торонто, подтверждает еще один психологический фактор.В одном из проведенных ими исследований 85 студентов выполняли упражнения с ручкой во рту, как в исследовании Стрэка/Мартина/Степпера. Половина была проинформирована перед тем, как положить ручки в рот, что улыбки — это реакция на счастье (что исследователи называют «реактивной теорией улыбки»), а половина была проинформирована о том, что улыбки — это попытки стать счастливыми («проактивная теория улыбки»). ). После выполнения упражнений их опрашивали на предмет их счастья.

    Исследователи обнаружили, что люди, которым рассказывали о «теории реактивной улыбки», были счастливее, если улыбались, а те, кому рассказывали о «теории проактивной улыбки», были счастливее, если не улыбались.Если вам сказали, что улыбка делает вас счастливым, другими словами, она не делает этого за вас:

    Источник: Лабру, Мукхопадхьяй, Донг, 2014 г.

    У исследователей также было 63 студента, половина из которых знакома с «реактивной» теорией, а другая половина с «активной» теорией. Они смотрели на фотографии и улыбались, если они находили их забавными. В одном наборе случаев было показано 10 забавных фотографий, а в другом только 1; в каждом случае также были фотографии, которые экспериментаторы не назвали смешными. Неудивительно, что люди улыбались чаще, когда им показывали более забавные фотографии, но много улыбаясь только делало людей, информированных об «активной» теории, еще более грустными:

    Источник: Лабру, Мукхопадхьяй, Донг, 2014 г.

    Вывод здесь состоит в том, что заставлять улыбаться людей, которые чувствуют себя подавленными, может быть контрпродуктивно. «С практической точки зрения, наши данные подразумевают, что если люди, которые плохо себя чувствуют, улыбаются, это может иметь неприятные последствия и заставить их чувствовать себя (или, по крайней мере, думать, что они чувствуют) хуже, потому что они могут интерпретировать улыбку как попытку стать счастливыми», — Лабру, Мукхопадхьяй и Донг. заключить. «Частая улыбка будет напоминать им о том, что они несчастны». Другими словами, The Killers были правы с самого начала:

    Семейный и косметический стоматолог | Премьер Смайлс

    Добро пожаловать

    Добро пожаловать в Premier Smiles, где вам предложат превосходную стоматологическую помощь с сочувствием и добротой.

    Мы серьезно относимся к вашим опасениям и с уважением выслушиваем вас. Пациенты участвуют в принятии решений, влияющих на их улыбки, поэтому они получают индивидуальный уход, соответствующий их индивидуальным потребностям.

    ПОЗВОНИТЕ НАМ: (704) 318-4305 ЗАПИСАТЬСЯ НА ЗАПИСЬ

    Профилактическая стоматология, восстанавливающая и улучшающая улыбку

    Premier Smiles обслуживает большую часть Шарлотты и близлежащих населенных пунктов из нашей практики, расположенной в парке Эшли. Если вы стремитесь поддерживать здоровье полости рта, восстанавливать поврежденные зубы или улучшать состояние рта с помощью косметических процедур, Premier Smiles позаботится о том, чтобы ваша улыбка была здоровой и привлекательной.

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

    Некоторые из наших специализаций включают:

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

    Построение отношений для оптимального ухода за зубами

    Наше дружелюбие и теплота в Premier Smiles позволяют нам строить отношения с членами семьи всех возрастов.Это также дает нам ценную информацию об изменениях, которые пациенты претерпевают в своем здоровье полости рта с течением времени. Понимание уникальных потребностей каждого пациента — это привилегия, которую мы высоко ценим.

    Современная стоматология, обслуживающая Шарлотту и окружающие сообщества

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

    Позвоните в Premier Smiles, и мы проконсультируем вас и вашу семью о том, как сохранить вашу улыбку сияющей.Мы предоставляем расслабляющую и квалифицированную помощь пациентам в Шарлотте и близлежащих районах.

    Premier Smiles of Charlotte открыт для плановых осмотров и уборки для вас и вашей семьи. Доктор Маркус Джин и его сотрудники заботятся о здоровье и безопасности наших дорогих пациентов во время пандемии COVID-19. Вы можете чувствовать себя уверенно, чтобы продолжать регулярные стоматологические осмотры и чистки, поэтому запишитесь на прием сегодня!

    Se Habla Español


    Подпишитесь на нас/Оставьте отзыв:


    У Premier Smiles есть вариант для наших пациентов, у которых нет стоматологической страховки.Нажмите на ссылку ниже для получения дополнительной информации.

    Dental Savers Ample Plan


    Доступны зубные щетки Sonicare «flex model»

    в нашем офисе со скидкой 20 долларов по почте!

    Всемирный день улыбки — Как улыбка влияет на ваш мозг » Олтман

    Мало что может скрасить чей-то унылый день так, как удачная улыбка. Будь то бариста, подносящий вам утренний кофе, или друг или коллега, сверкающий своим жемчужно-белым кофе, улыбка — это простой способ улучшить не только мир вокруг вас, но и ваши внутренние чувства.И поскольку сегодня Всемирный день улыбки (первая пятница октября каждого года), мы хотели бы погрузиться в то, что именно происходит в уме, когда вы улыбаетесь.

    Начнем с химии мозга. Улыбка активирует крошечные молекулы в вашем мозгу, которые предназначены для защиты от стресса. Эти молекулы, называемые нейропептидами, облегчают связь между нейронами в вашем мозгу. Кроме того, когда вы улыбаетесь, ваш мозг выделяет дофамин, эндорфины и серотонин. Эти нейротрансмиттеры связаны со снижением вашего беспокойства и усилением чувства счастья.На самом деле серотонин часто является химическим веществом, которое антидепрессанты пытаются регулировать. Этот натуральный химический коктейль для хорошего самочувствия, который подает ваш мозг, помогает вам чувствовать себя счастливее и расслабленнее, а также может снизить частоту сердечных сокращений и кровяное давление.

    Если этого недостаточно, как бы вы хотели быть более привлекательным? Вам не нужно планировать какие-либо упражнения или надевать модную одежду — все, что вам нужно сделать, это улыбнуться. Исследование, проведенное в Шотландском университете, показало, что те, кто улыбался и устанавливал зрительный контакт, неизменно оценивались по шкале привлекательности выше, чем те, кто этого не делал.

    Все мы слышали, что улыбка заразительна, но это просто старое клише или правда? Часть вашего мозга, которая помогает улыбаться, когда вы счастливы, или имитировать чью-то улыбку, находится в области бессознательного автоматического реагирования. Другими словами, улыбка действительно заразительна. Когда кто-то улыбается вам, вы поведенчески и психологически настроены ответить взаимностью. Или, когда вы чувствуете себя счастливым, вы должны сделать сознательное усилие, чтобы подавить улыбку, которая бессознательно хочет расплыться по вашему лицу.А когда улыбка поднимает настроение, делает вас более привлекательным и может легко распространяться на других, зачем вам это?

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

    Написать ответ

    Ваш адрес email не будет опубликован.